$(ProjectDir) 和 $(MSBuildProjectDir) 有什么区别?

Duc*_*tro 3 .net msbuild visual-studio

在调查仅发生在我们的构建服务器上的构建问题时,我很惊讶地看到这个答案指出同时存在 a$(ProjectDir)和 a $(MSBuildProjectDir),前者有时不可用。

一般情况下有什么区别?如果可用的话,我应该始终使用$(MSBuildXXX)属性版本吗?$(ProjectDir)为什么首先使用?

与其他问答中的建议相反,我有时会看到$(MSBuildProjectDir) = ''.

Ste*_*eve 6

正如您链接的答案所说,$(ProjectDir)仅在导入 Microsoft.Common.Targets 后才可用,而$(MSBuildProjectDir)是 MSBuild 本身的保留属性。

因此,使用这些$(MSBuildXXX)属性将确保您始终可以使用它们,而无需导入所有必要的引用。