2017-01-05 36 views
1

我有多个项目的解决方案,其中一人有此版本的警告,显示如何绕过Microsoft.Bcl.Build警告

所有项目参考Project.csproj必须安装的NuGet 包Microsoft.Bcl。生成

我想摆脱这个警告,因为我们要应用一个干净的构建方法进行构建集成,其中所有的警告将被视为错误。因此,在推送到可触发CI构建的远程存储库并在主构建中合并需要成功之前,应清除所有警告和错误。

如何删除/取消/绕过此特定警告?

+3

您是否尝试过按照警告中的说明进行操作,并在上述项目中安装上述nuget软件包? – Sefe

+0

是的,那么警告会在其他项目中传播,并且所有这些警告都会显示。为什么我应该在没有它的情况下正常工作时安装? –

+2

如果一切正常,为什么警告会打扰你?由于您决定将警告视为错误,因此所有内容都不能正常工作。通过解决潜在的问题来移除警告。如果你决定使用Microsoft.Bcl.Build,你必须接受后果。 – Sefe

回答

4

我已经通过完全删除所有Microsoft.BclMicrosoft.Bcl.Build引用作为@nozzleman的意见建议解决了这个问题。

虽然没有DLL引用存在于References列表在Solution Explorer中,有那些2包,如下面package.config条目:

<package id="Microsoft.Bcl" version="1.1.10" targetFramework="net461" /> 
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net461" /> 

我做了搜索(按Ctrl + F)在条款Microsoft.BclMicrosoft.Bcl.Build完整的解决方案并已删除所有packages.config这些条目,也从没有像下面的条目的.csproj文件:

<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" /> 
    <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''"> 
    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" /> 
    <Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" /> 
    </Target> 

这些行是在之前安装时添加的,因为有人通过按手动删除引用删除键,它们未被删除。

从任何地方清洗这两个物品后,警告消失。

0

如何删除/取消/绕过此特定警告?

您可以添加一个名为Properties的参数,其值为SkipValidatePackageReferences = true,以禁止尚未支持Nuget的项目的项目引用,这是安全的。就像这样:

<ItemGroup> 
    <ProjectReference Include="..\MyProject\Project.csproj"> 
     <Name> Project</Name> 
     <Project>{77ACF4A4-5F19-40E9-991D-BDB09B175366}</Project> 
     <Private>True</Private> 
     <RoleType>Web</RoleType> 
     <RoleName>MyProject</RoleName> 
     <UpdateDiagnosticsConnectionStringOnPublish>True</UpdateDiagnosticsConnectionStringOnPublish> 
     <Properties>SkipValidatePackageReferences=true</Properties> 
    </ProjectReference> 
    </ItemGroup> 
+1

SkipValidatePackageReferences应用于ProjectReference,因此不会为所引用的项目验证其他NuGet包引用。这看起来太宽泛了,因为其他软件包应该被正确地验证,不是吗?我想这就是为什么你和其他许多人都清楚地陈述:“不支持Nuget的项目”。但是通过将此解决方法限制为仅当“尚未支持NuGet的项目”时,它并未解决具有其他软件包引用的项目仍会使编译器警告的事实。 –