我无法找到任何相关文档 - 来自Microsoft.Bcl.Build Nuget page的链接提供了很多帮助:
此软件包提供构建基础结构组件,以便可以成功构建引用特定Microsoft软件包的项目。
除非您收到指示您添加引用的构建警告,否则不要直接引用此包。
通过查看Microsoft.Bcl.Build.targets
文件,它看起来像是管理绑定重定向和包引用。看起来只有在Visual Studio中运行时才会使用某些功能。
任何人都可以提供有关此套餐的更多信息吗? It's a pain in our build server environment,完全从源代码构建(例如构建服务器环境)时可以忽略它吗?
答案 0 :(得分:22)
从Microsoft.Bcl.Build.targets
开始,它有很多项目配置目标,例如:
EnsureBindingRedirects
- 确定为绑定重定向选择了哪些引用,并使用它们更新app.config BclBuildValidateNugetPackageReferences
- 此目标验证当前项目中安装的任何Nuget包还具有在当前项目中安装的依赖项(传递依赖项)。基于此评估,我决定只在开发环境中添加/删除/更新NuGet依赖项时才需要此功能;并且它可以在CI环境中被忽略,它会导致问题。
所以我想在我的* .csproj文件中保留依赖项,但在运行CI构建时忽略它。我通过在构建环境目标文件(例如builder.targets)上添加条件导入来实现这一点,该文件包含以下块:
<!-- Skip Microsoft.Bcl.Build functionality when building only from Source. -->
<PropertyGroup>
<BclBuildImported>Ignore</BclBuildImported>
</PropertyGroup>
这具有忽略CI环境中的目标,但在开发环境中激活它们的全部效果。我已经运行了一个多星期,到目前为止没有问题......
我仍然想知道是否有人有关此套餐的更好信息,表明这样做是个坏主意。到目前为止,我认为这是一个好主意。
编辑2018-02-01:
请注意,ignore参数也可以在命令行上传递,以跳过Microsoft.Bcl.Build.targets
逻辑:
msbuild (targets, etc) /p:BclBuildImported=Ignore
答案 1 :(得分:11)
对于较旧的软件包来说,它基本上是一种针对旧版.Net构建和编译的方法,在新的.Nets上没有任何问题
如果您转到http://blogs.msdn.com/b/bclteam/p/bclbuild.aspx,您会看到两条链接到http://blogs.msdn.com/b/dotnet/archive/2013/11/13/pcl-and-net-nuget-libraries-are-now-enabled-for-xamarin.aspx和http://blogs.msdn.com/b/dotnet/archive/2013/08/12/improved-package-restore.aspx的公告,应该对其进行解释。