MsBuild SDK项目样式:项目依赖项有时会失败

时间:2018-09-24 15:21:38

标签: msbuild msbuild-task .net-standard-2.0 msbuild-target

在解决方案中,我有一些依赖项目配置为SDK样式项目:

  • 项目负责人,作为MsBuild任务进行例行工作
  • 需要进行正确编译的处理的Proj B项目
  • 任务在Proj B处配置为具有属性BeforeTargets =“ CoreCompile”的MsBuild目标。

基于此,在Proj B编译上运行任务之前,应完全编译ProjA。 这两个项目具有不同的编译目标(NetStandard20和Net462)。因此,我无法直接引用,而是通过将属性AddSyntheticProjectReferencesForSolutionDependencies设置为false来进行解决方案范围内的项目依赖(否则msbuild试图使项目依赖变为强制)。

在该设置中,MsBuild有时在编译时失败:Proj A开始编译,但是Proj B运行任务时未及时完成。 在CI机器上使用/ m键启动MSBuild。

欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您实际上确实想要一个综合项目引用,但是如果具有依赖项的项目是多目标的,则MSBuild中目前存在一个细微的问题,该问题会在项目引用之间创建一些问题。这是fixed in 15.9

请在Visual Studio预览版15.9中进行尝试(在撰写本文时:15.9预览版2)。

如果您不想等待,可以自己在csproj文件中添加类似的项目引用:

<ItemGroup>
  <ProjectReference Include="..\other\project.csproj"
    ReferenceOutputAssembly="false"
    LinkLibraryDependencies="false"
    CopyLocal="false"
    SkipGetTargetFrameworkProperties="true"
    GlobalPropertiesToRemove="TargetFramework"
    />
</ItemGroup>