我有多个项目的解决方案,其中一人有此版本的警告,显示如何绕过Microsoft.Bcl.Build警告
所有项目参考Project.csproj必须安装的NuGet 包Microsoft.Bcl。生成
我想摆脱这个警告,因为我们要应用一个干净的构建方法进行构建集成,其中所有的警告将被视为错误。因此,在推送到可触发CI构建的远程存储库并在主构建中合并需要成功之前,应清除所有警告和错误。
如何删除/取消/绕过此特定警告?
我有多个项目的解决方案,其中一人有此版本的警告,显示如何绕过Microsoft.Bcl.Build警告
所有项目参考Project.csproj必须安装的NuGet 包Microsoft.Bcl。生成
我想摆脱这个警告,因为我们要应用一个干净的构建方法进行构建集成,其中所有的警告将被视为错误。因此,在推送到可触发CI构建的远程存储库并在主构建中合并需要成功之前,应清除所有警告和错误。
如何删除/取消/绕过此特定警告?
我已经通过完全删除所有Microsoft.Bcl 和Microsoft.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.Bcl和Microsoft.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>
这些行是在之前安装时添加的,因为有人通过按手动删除引用删除键,它们未被删除。
从任何地方清洗这两个物品后,警告消失。
如何删除/取消/绕过此特定警告?
您可以添加一个名为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>
SkipValidatePackageReferences应用于ProjectReference,因此不会为所引用的项目验证其他NuGet包引用。这看起来太宽泛了,因为其他软件包应该被正确地验证,不是吗?我想这就是为什么你和其他许多人都清楚地陈述:“不支持Nuget的项目”。但是通过将此解决方法限制为仅当“尚未支持NuGet的项目”时,它并未解决具有其他软件包引用的项目仍会使编译器警告的事实。 –
您是否尝试过按照警告中的说明进行操作,并在上述项目中安装上述nuget软件包? – Sefe
是的,那么警告会在其他项目中传播,并且所有这些警告都会显示。为什么我应该在没有它的情况下正常工作时安装? –
如果一切正常,为什么警告会打扰你?由于您决定将警告视为错误,因此所有内容都不能正常工作。通过解决潜在的问题来移除警告。如果你决定使用Microsoft.Bcl.Build,你必须接受后果。 – Sefe