我有多個項目的解決方案,其中一人有此版本的警告,顯示如何繞過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