0

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

  • Proj A 负责做一些例程作为 MsBuild 任务
  • 需要这样处理才能正确编译的 Proj B 项目
  • 任务在 Proj B 中配置为 MsBuild 目标,属性为 BeforeTargets="CoreCompile"。

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

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

欢迎任何想法。

4

1 回答 1

0

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

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

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

<ItemGroup>
  <ProjectReference Include="..\other\project.csproj"
    ReferenceOutputAssembly="false"
    LinkLibraryDependencies="false"
    CopyLocal="false"
    SkipGetTargetFrameworkProperties="true"
    GlobalPropertiesToRemove="TargetFramework"
    />
</ItemGroup>
于 2018-09-24T19:11:05.493 回答