我有一个由Visual Studio生成的非SDK风格格式的旧项目。它包含一个生成后事件,其中使用了$(ProjectDir)
和$(TargetDir)
。
我目前正在将该项目转换为一个新的SDK风格的项目(csproj
文件(。如果我只是将构建后的事件转换为Target
Exec
Command
,我会得到错误。在命令前面加上echo
之后,我可以理解为什么:值$(ProjectDir)
和$(TargetDir)
都是空的。
我发现用$(MSBuildProjectDirectory)
代替$(ProjectDir)
会得到想要的结果,但$(TargetDir)
的等价物是什么?
请注意,我没有将Visual Studio用于新的SDK样式项目。我正在使用Visual Studio代码。Visual Studio似乎为$(ProjectDir)
/$(TargetDir)
/others设置了值,但Visual Studio Code没有。我使用dotnet build
构建我的项目。
似乎我在这里找到了答案:
TargetDir的值计算为您指定的项目输出路径的完整绝对路径,该路径直接存储在项目文件(.CSPROJ、.VBPROJ等(的OutputPath属性中。
所以我相信$(TargetDir)
就是$(MSBuildProjectDirectory)$(OutputPath)
。