Compilation 仅当输出路径更改时MSBuild重新编译项目

Compilation 仅当输出路径更改时MSBuild重新编译项目,compilation,msbuild,target,Compilation,Msbuild,Target,我们有两个项目A和B。B引用A。我们为MSBuild创建了两个要编译的目标,其中的差异仅在输出路径中(它是分离的文件,而不是csproj项目)。两个项目的immidate文件夹都是标准的,我的意思是obj文件夹 我们运行第一个目标(使用/t开关从命令行运行MSBuild)——一切正常。我们没有在cs中更改任何内容,但更改了输出路径和编译。在这种情况下,A未重新编译,但B已完全重新编译。所以在输出路径中,我们有一个版本相同的A,但是B版本不同 你知道为什么要重新编译B项目吗 编辑 经过一些研究,M

我们有两个项目A和B。B引用A。我们为MSBuild创建了两个要编译的目标,其中的差异仅在输出路径中(它是分离的文件,而不是csproj项目)。两个项目的immidate文件夹都是标准的,我的意思是obj文件夹

我们运行第一个目标(使用/t开关从命令行运行MSBuild)——一切正常。我们没有在cs中更改任何内容,但更改了输出路径和编译。在这种情况下,A未重新编译,但B已完全重新编译。所以在输出路径中,我们有一个版本相同的A,但是B版本不同

你知道为什么要重新编译B项目吗

编辑

经过一些研究,MSBuild似乎将输出路径作为缓存哈希的一部分(此文件:obj\Debug\CoreCompileInputs.cache)

我们这样称呼MSBuild:

msbuild mysolution.sln /p:OutputPath=c:\mydir

和csproj是标准的VS2017 csproj。

项目的输出路径是否也发生了更改?是的,对于这两个项目,请发布用于构建这些项目的msbuild代码,并指定它们是什么类型的项目(C++/C#/…)?