2017-01-05 38 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的項目」時,它並未解決具有其他軟件包引用的項目仍會使編譯器警告的事實。 –