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

问题描述 投票:0回答:1

调查仅发生在我们的构建服务器上的构建问题,我很惊讶地看到这个答案指出同时存在

$(ProjectDir)
$(MSBuildProjectDir)
,前者有时不可用。

一般有什么区别?我是否应该始终使用

$(MSBuildXXX)
版本的属性(如果可用)?为什么首先使用
$(ProjectDir)

与其他问答中的建议相反,我有时会看到

$(MSBuildProjectDir) = ''

.net visual-studio msbuild
1个回答
7
投票

正如您链接的答案所说,

$(ProjectDir)
仅在导入
Microsoft.Common.Targets
后才可用,而
$(MSBuildProjectDirectory)
是MSBuild本身的保留属性:

MSBuildProjectDirectory:项目文件所在目录的绝对路径,例如C:\MyCompany\MyProduct

请勿在此属性中包含最后的反斜杠。

示例:

C:\Source\Repos\ConsoleApp1\ConsoleApp1

来源:MSBuild 保留和众所周知的属性

因此,使用

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

请注意,原始问题中提出的

$(MSBuildProjectDir)
现已被弃用。

© www.soinside.com 2019 - 2024. All rights reserved.