2016-01-21 89 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文件。

相关问题