从来看Microsoft.Bcl.Build.targets
,它有很多项目配置目标,例如:
EnsureBindingRedirects
-确定为绑定重定向选择了哪些引用,并使用它们更新app.config
BclBuildValidateNugetPackageReferences
-此目标验证当前项目中安装的所有Nuget软件包是否也已在当前项目中安装其依赖项(传递依赖项)。
因此,基于此评估,我决定仅在开发环境中添加/删除/更新NuGet依赖项时才需要此功能。并且在引起问题的CI环境中可以忽略它。
因此,我想将依赖性保留在我的* .csproj文件中,但在运行CI构建时将其忽略。我通过在构建环境目标文件(例如builder.targets)上添加条件导入来做到这一点,该文件包括以下代码块:
<PropertyGroup>
<BclBuildImported>Ignore</BclBuildImported>
</PropertyGroup>
这样做的净效果是忽略CI环境中的目标,但在开发环境中激活它们。我已经运行了一个多星期,到目前为止没有任何问题。
我仍然很想知道是否有人对这个软件包有更好的信息,表明这样做不是一个好主意。到目前为止,我认为这是个好主意。
编辑2018-02-01:
请注意,ignore参数也可以在命令行上传递,以跳过Microsoft.Bcl.Build.targets
逻辑:
msbuild (targets, etc) /p:BclBuildImported=Ignore
So I want to keep the dependency in my *.csproj files, but ignore it. I did that by adding a conditional import on a build environment targets file (eg builder.targets)
,您能详细说一下吗?