我刚尝试从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 process
说出了错误。
所以我检查了目标文件。发现<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软件包可以成功构建。
除非您收到构建,否则不要直接引用此包 指示您添加引用的警告。
还是不能理解它..
答案 0 :(得分: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恢复solution.sln 在构建之前,或者如果愿意,可以签入.targets文件。