如何在C#后期构建步骤中创建更多宏 我有一个Visual Studio 2012解决方案,其中既包含C++项目,又包含C++项目。 我想创建一个后生成步骤,我注意到C++项目比C项目有更多的宏。我需要得到C++中的宏,而不是C语言宏。

如何在C#后期构建步骤中创建更多宏 我有一个Visual Studio 2012解决方案,其中既包含C++项目,又包含C++项目。 我想创建一个后生成步骤,我注意到C++项目比C项目有更多的宏。我需要得到C++中的宏,而不是C语言宏。,c#,visual-c++,visual-studio-2012,post-build-event,C#,Visual C++,Visual Studio 2012,Post Build Event,C++宏 C#宏 我能看到C++项目中C++项目可用的所有宏吗??< /p> < p>我可以考虑下面的解决方法。编写以下生成后命令: $(ProjectDir)post_build.bat 在项目目录中创建post_build.bat文件,并按以下方式填充: echo %WindowsSdkDir% echo %WinDir% 构建项目时,它会打印: ECHO is on. C:\Windows 因此,C#不够聪明,无法看到Visual Studio构建环境变量(%WindowsSdk

C++宏

C#宏


我能看到C++项目中C++项目可用的所有宏吗??< /p> < p>我可以考虑下面的解决方法。编写以下生成后命令:

$(ProjectDir)post_build.bat
在项目目录中创建
post_build.bat
文件,并按以下方式填充:

echo %WindowsSdkDir%
echo %WinDir%
构建项目时,它会打印:

ECHO is on.
C:\Windows
因此,C#不够聪明,无法看到Visual Studio构建环境变量(
%WindowsSdkDir%
已扩展为零),但至少扩展了一般环境变量,如
WinDir
。因此,您可以使用与
WindowsSDKDir
相同的值创建自己的环境变量,并在从生成后步骤调用的批处理文件中使用它

要使内容比echo更有用,请使用参数(
%1%
%2%
等)创建批处理文件,并从生成后步骤调用它,传递所需的参数。例如:

$(ProjectDir)post_build.bat $(TargetPath)

在批处理文件中,
%1%
将作为输出文件名展开。

只需调用为Visual Studio命令提示符设置环境变量的批处理文件作为生成事件的第一行。这将设置所有环境变量,以便在构建事件的后续行中使用。例如

call "$(DevEnvDir)..\..\VC\vcvarsall.bat"
"%WindowsSdkDir%bin\x86\rc.exe" <parameters>
call "%ProgramFiles(x86)%\Microsoft Visual Studio $(VisualStudioVersion)\VC\vcvarsall.bat"