如何在VS2013开发人员命令提示符中打开和运行devenv \ build命令?

3
我希望可以从命令行构建VS 2013项目。需要手动打开“VS2013开发人员命令提示符”,将目录更改为项目目录,然后输入以下命令:
devenv myproject.csproj /build

项目构建成功。

问题在于我想从一个C#函数中执行此操作。我尝试了很多方法,但都没有成功。

手动执行时,我会从快捷方式启动命令提示符。该快捷方式实际上运行一个 .bat 文件,以设置环境,使您可以从命令提示符中运行像 devenv 这样的命令。 以下是我正在运行的代码:

string runDevEnv = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>devenv.com ";
string projectPath = @"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\CodedUITestProject2\CodedUITestProject2\CodedUITestProject2.csproj" ;
string makeString = "\"";
string slashc = "/c ";
string makebuild = " /build";
string compileProject = slashc + runDevEnv + makeString + projectPath + makeString + makebuild;
System.Diagnostics.Process.Start("CMD.exe", compileProject);

请告诉我们您尝试了什么以及发生了什么,而不仅仅是“我尝试了很多事情”。另外,您想运行Visual Studio而不只是msbuild的原因是什么?您可能需要使用Process类来启动cmd.exe - Jon Skeet
让我换一种方式来说:我该如何在C#中打开命令行,将目录更改为所需的目录并运行devenv myproject.csproj /build命令?因为我尝试使用System.Diagnostics.Process.Start("CMD.exe",compileProject)其中compileProject包含整个命令。我还尝试了使用Process.Start的startinfo,但仍然无法编译项目。 - Limbo
你不是要“打开命令行”,而是在正确的目录下运行cmd.exe(你可以设置工作目录),并使用“/c”指定要运行的命令。 - Jon Skeet
我现在正在尝试添加代码,但没有任何结果。 - Limbo
@JonSkeet 我非常感谢你的努力,非常感谢,我只是很沮丧,在尝试编译这段代码已经两天了,尝试了我能找到的一切方法。 - Limbo
显示剩余6条评论
1个回答

3

如果你真的需要,可以更容易地创建一个批处理文件来调用devenv,但否则,我怀疑这只是引号的问题 - 并且你的路径中有一个>符号指向devenv.exe。请尝试:

string devEnv = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe";
string projectPath = @"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\CodedUITestProject2\CodedUITestProject2\CodedUITestProject2.csproj" ;
string compileProject = string.Format("/c \"{0}\" \"{1}\" /build",
    devEnv, projectPath);
Process.Start("CMD.exe", compileProject);

(如评论所述,您可能更想使用devenv.com而不是devenv.exe,以防止Visual Studio本身启动。如果可能,请尽量使用msbuild,这显然更好 - 我知道它现在无法工作,但值得调查为什么而不是放弃它。)

1
我尝试创建一个批处理文件,但问题是当从批处理文件运行devenv命令时,VS IDE会打开,而我需要它静默运行。 - Limbo
@Limbo:尝试使用devenv.com而不是devenv.exe - 我相信这就是它的用途。 - Jon Skeet
@Limbo:不太清楚这是什么。我怀疑“什么都没有发生”...是否会抛出异常?是否会弹出一个命令行窗口(对我来说是这样的)?你从哪里运行它?(Web应用程序?命令行应用程序?其他东西?)你尝试使用devenv.com了吗?恐怕我有限的时间无法继续在这里获取更多信息... - Jon Skeet
当使用devenv.com(Windows 8.1)时,出现了大的消息“此应用程序无法在您的计算机上运行”,有趣的是,在我的一些实验之前,我能够使用devenv.com构建,突然间这个消息开始出现。 - Limbo
我正在从控制台应用程序中运行它,它运行了,打开了一个控制台,然后退出,没有异常,没有错误,但也没有项目编译。 - Limbo
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接