MsBuild SDK 项目风格:项目依赖有时会失败

MsBuild SDK project style: project dependencies sometimes fails

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

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

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

欢迎任何想法。

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

请在 15.9 的 visual studio 预览版中试用(撰写本文时:15.9 预览版 2)。

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

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