如何绕过Microsoft.Bcl.Build警告

时间:2017-01-05 11:42:56

标签: c# visual-studio msbuild

我有一个包含多个项目的解决方案,其中一个项目的构建警告显示

  

所有引用Project.csproj的项目都必须安装nuget   包Microsoft.Bcl.Build

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

如何删除/禁止/绕过此特定警告?

3 个答案:

答案 0 :(得分:7)

  

我已通过完全删除所有 Microsoft.Bcl 解决了该问题    Microsoft.Bcl.Build 引用@nozzleman在评论中建议。

虽然解决方案资源管理器中的References列表中没有dll引用,但package.config中有这两个包的条目如下:

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

我在 Microsoft.Bcl Microsoft.Bcl.Build 这两个词的完整解决方案中进行了搜索(Ctrl + F),并从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>

这些行在之前安装时附加了,并且当有人通过按删除键手动删除引用时,它们未被删除。

从所有地方清理这两件物品后,警告就会从构建中消失。

答案 1 :(得分:3)

  

如何删除/禁止/绕过此特定警告?

您可以添加名为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>

答案 2 :(得分:0)

就我而言,我遇到了同样的错误,但结果证明我应该修复 proj 文件中包的路径。我把它从: ..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets

..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets

只是这个包是第一个,由于包路径不正确,构建失败。