2016-01-21 112 views
2

我試圖從GitHub下載並構建DotNetOpenAuth.Samples。但是從nuget.targets得到了一個錯誤The process cannot access the file 'xxx\tools\Microsoft.Bcl.Build.Tasks.dll' because it is being used by another processMicrosoft.Bcl.Build它是什麼用於

所以我檢查了目標文件。發現<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>導致該錯誤。

packages.config我發現<package id="Microsoft.Bcl.Build" version="1.0.8" targetFramework="net40" />定義。

因爲我發現該項目並沒有真正引用dll。所以我只是評論軟件包的配置。並重建它。錯誤消失了。

但我的問題是爲什麼這個軟件包沒有被引用在項目中,而是在軟件包配置中定義的?什麼是(Microsoft.Bcl.Build)用於?

謝謝。

更新

忘記從的NuGet添加信息。

該軟件包提供構建基礎結構組件,以便項目 引用特定的Microsoft軟件包可以成功構建。

除非您收到構建 警告,指示您添加引用,否則不要直接引用此包。

仍然無法理解得很好但..

回答

2

簡而言之,它是的NuGet包的輔助層。的Microsoft.Bcl.Build 1.0 announcement提供了細節:

Microsoft.Bcl.Build的新版本將確保解決方案 包含我們的包將成功加載,即使包不是 尚未恢復。這會影響所有依賴於它的.NET NuGet包,如Microsoft.Net.Http,Microsoft.Bcl和Microsoft.Bcl.Async等 。

如果您要求重新構建,缺少 包,Microsoft.Bcl.Build將提供可操作的錯誤消息。

當與NuGet 2.7配合使用,其中包自動恢復爲 Visual Studio並且未通過MSBuild實施時,體驗爲 透明且平滑。但是,這並沒有解決構建服務器 的情況,所以在構建之前仍需要運行nuget.exe restore solution.sln ,或者如果首選,請檢入.targets文件。