$(ProjectDir) 预构建事件宏不正确

Jam*_*ger 1 msbuild visual-studio visual-studio-2017

我正在使用 Visual Studio 2017 并且我有一个预构建事件。

我有一个项目位于C:\Project\src\Project\,批处理文件doSomething.bat位于C:\Project\src\Project\doSomething.bat

在我的预构建事件中,我想运行doSomething.bat,所以我有这个脚本:

cd $(ProjectDir) && call ./doSomething.bat
Run Code Online (Sandbox Code Playgroud)

然而,$(ProjectDir)实际上把我放在C:\Project\src\Project\bin\Debug\netcoreapp1.1\

这不是文档说明的内容。我怎样才能解决这个问题?

Mar*_*ich 5

对于基于 SDK 的项目PreBuildEvent并且PostBuildEvent过早评估以接收许多属性的“最终”值,它们甚至被认为已弃用(请参阅https://github.com/dotnet/project-system/issues/1569

作为一种快速的解决方法,您可以使用$(MSBuildProjectDirectory)or$(MSBuildThisFileDirectory)它将为您提供.csproj文件所在。

对于更集成的解决方案,您可以像这样向 csproj 文件添加自定义目标(无需cd步骤):

<Target Name="MyAfterBuild" AfterTargets="Build">
  <Exec Command="test.bat" />
</Target>
Run Code Online (Sandbox Code Playgroud)