我有一个包含多个项目的解决方案,其中一个项目的构建警告显示
所有引用Project.csproj的项目都必须安装nuget 包Microsoft.Bcl.Build
我想摆脱这个警告,因为我们要为构建集成应用一个干净的构建方法,其中所有警告都将被视为错误。因此,在推送到远程存储库之前,应该清除所有警告和错误,这将触发CI构建,并且合并主构建需要成功。
如何删除/禁止/绕过此特定警告?
答案 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
只是这个包是第一个,由于包路径不正确,构建失败。