我找不到任何关于这方面的文档-Microsoft.Bcl.Build Nuget page的链接没有提供太多帮助:

此软件包提供构建基础 struct 组件,以便引用特定Microsoft软件包的项目可以成功构建.

除非收到指示您添加引用的生成警告,否则不要直接引用此包.

Microsoft.Bcl.Build.targets文件来看,它似乎管理绑定重定向和包引用.看起来有些功能只在Visual Studio中运行时使用.

有没有人能提供更多关于这个包做什么的信息?It's a pain in our build server environment,当完全从源代码构建(例如构建服务器环境)时,可以忽略它吗?

推荐答案

Microsoft.Bcl.Build.targets看,它有一系列项目配置目标,例如:

  • EnsureBindingRedirects-确定哪些引用被 Select 用于绑定重定向,并更新应用程序.和他们在一起
  • BclBuildValidateNugetPackageReferences-此目标验证当前项目中安装的任何Nuget软件包是否也在当前项目中安装了它们的依赖项(传递依赖项).

因此,基于此判断,我决定只有在开发环境中添加/删除/更新NuGet依赖项时才需要此功能;而在CI环境中可以忽略此功能,因为在CI环境中它会导致问题.

所以我想在我的*中保留依赖关系.csproj文件,但在运行CI生成时忽略它.为此,我在构建环境目标文件(例如builder.targets)上添加了一个条件导入,其中包括以下块:

<!-- Skip Microsoft.Bcl.Build functionality when building only from Source. -->
<PropertyGroup>
  <BclBuildImported>Ignore</BclBuildImported>
</PropertyGroup>

这样做的净效果是忽略CI环境中的目标,但在开发环境中激活它们.我已经运行了一个多星期了,到目前为止没有问题...

我仍然很想知道是否有人有关于这个包的更好的信息,表明这样做不是一个好主意.到目前为止,我认为这是个好主意.

Edit 2018-02-01:

请注意,也可以在命令行上传递ignore参数,以跳过Microsoft.Bcl.Build.targets逻辑:

msbuild (targets, etc) /p:BclBuildImported=Ignore

.net相关问答推荐

无法在Ubuntu 22.04.3上运行带有Rider 2023和DotNet-8.0的项目

SeriLog LogConext.PushProperty在ASP.NET MVC 5中不能使用OWIN中间件

仅使用 .NET GetBytes 方法转换有效字节而不创建问号

CustomControl 计算自己的宽度和高度 - 使用 bounds.Height=0 调用 ArrangeOverride

单击关闭按钮时隐藏表单而不是关闭

在c#中计算中位数

如何防止和/或处理 StackOverflowException?

将屏幕捕获为位图

OpenCV的.Net(dotNet)包装器?

编译错误:显式实现接口时修饰符 'public' 对此项目无效

LINQ 性能常见问题解答

.NET - 实现捕获所有异常处理程序的最佳方法是什么

在 JavaScript 中使用 String.Format?

新的 netstandardapp 和 netcoreapp TFM 有什么区别?

将两个列表映射到 C# 中的字典中

SqlBulkCopy 的推荐批量大小是多少?

将 SignalR 2.0 .NET 客户端重新连接到服务器集线器的最佳实践

带有嵌套控件的设计模式

将控制台输出镜像到文件

如何使用 AutoMapper .ForMember?