$(TargetDir) 替换 SDK 样式项目(类似于“$(MSBuildProjectDirectory)\”代表“$(ProjectDir)”)

Kja*_*ara 7 .net c# msbuild build csproj

我有一个由 Visual Studio 生成的非 SDK 样式格式的旧项目。它包含一个使用$(ProjectDir)和 的构建后事件。$(TargetDir)

我目前正在将该项目转换为一个新的SDK风格的项目(csproj文件)。如果我只是将该构建后事件转换为Target Exec Command,我会收到错误。在命令前面加上前缀后,echo我可以明白为什么:值$(ProjectDir)$(TargetDir)都是空的。

我发现替换$(ProjectDir)$(MSBuildProjectDirectory)\可以得到所需的结果,但是 的等效项是什么$(TargetDir)


请注意,我没有将 Visual Studio 用于新的 SDK 样式项目。我正在使用 Visual Studio 代码。看起来 Visual Studio 为$(ProjectDir)/ $(TargetDir)/others 设置了值,但 Visual Studio Code 没有。我使用 构建我的项目dotnet build

Kja*_*ara 9

似乎我在这里找到了答案:

TargetDir 的值计算为您指定为项目输出路径的完整绝对路径,该路径直接存储在项目文件(.CSPROJ、.VBPROJ 等)的 OutputPath 属性中。

所以我相信$(TargetDir)会的$(MSBuildProjectDirectory)\$(OutputPath)