在 post 构建事件中调用 csc.exe

Call csc.exe in post build event

我需要 运行 C# 编译器 csc.exe 在构建项目之后,但在启动它之前。它不能是 运行 "implicitly",因为它需要编译的 C# 文件是在先前的 post 构建事件中动态生成的。 (C# 文件是通过 运行 将外部程序针对 JAR 文件 (Java) 生成的;csc 调用实际上包含在程序生成的批处理文件中。我会在 post-build 事件中 运行 这个批处理文件)。 问题是当我尝试调用它时,VS 找不到它,因为它似乎不在 PATH 中。此外,我找不到 vcvarsall.bat 文件(可能会将 csc.exe 添加到路径中)并且我无法安装包含它的 VS 组件,因为我正在客户端的受限机器上工作。

但我可以通过在 "Developer Command Prompt for VS2015".

中手动启动它来成功 运行 csc

编辑:目前使用 CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat" 似乎可行,但是否有另一种不使用某些 BAT 文件的硬编码路径的方法?为什么 VS 不让我使用 csc,而它自己隐式使用它?

作为快速解决方案,您可以使用以下命令独立于Visual Studio 2015的安装目录执行批处理文件:

call "%VS140COMNTOOLS%\VsDevCmd.bat"

一个可能更好的方法是编写一个单独的 *.csproj 文件来引用由外部作业创建的代码文件,并将该项目添加到您的解决方案中并使其依赖于生成源文件的项目.