使用 Microsoft VS.NET 从命令行或通过上下文菜单项构建解决方案






4.35/5 (14投票s)
展示如何从命令行或通过上下文菜单项构建解决方案文件。
引言
这篇小文章可以给你一个提示,告诉你如何快速构建你的解决方案文件,而无需运行 6 个 Visual Studio 应用程序,这些应用程序会使你的暂存文件膨胀,直到你的电脑像我奶奶一样慢。
首先,运行%ProgramFiles%\Microsoft Visual Studio .NET\Common7\Tools\vsvars32.bat,如果在命令行中找不到 devenv.exe(Visual Studio IDE)。
devenv.exe 的命令行开关
要查看此列表,请在命令提示符下键入 devenv /?
- /build - 构建指定的解决方案配置
- /project - 指定要构建的项目,而不是解决方案,必须指定 /build 才能使用 /project
- /projectconfig - 指定要构建的项目配置,必须指定 /project 才能使用 /projectconfig
- /out - 将构建输出写入指定文件
- /rebuild - 类似 /build,但强制先进行清理
- /clean - 清理构建输出
- /deploy - 构建指定的解决方案配置,然后进行部署
- /run - 运行指定的解决方案配置
- /runexit - 运行指定的解决方案配置,然后终止
- /command - 启动后执行指定的内部命令行
- /mditabs - 使用选项卡式文档界面
- /mdi - 使用 MDI 界面
- /fn - 使用指定的字体名称
- /fs - 使用指定的字体大小
- /LCID - 使用指定的语言 ID
- /noVSIP - 禁用用于 VSIP 测试的 VSIP 开发者许可证密钥
- /safemode - 仅加载默认环境和服务以确保稳定性
- /resetskippkgs - 允许加载失败后标记的 VSPackage 再次加载
控制台应用程序 BuilderHelper
这个小的控制台应用程序能够检查 devenv.exe 的返回值,如果出现问题,我们可以显示构建日志。
基本方法如下
System.Diagnostics.ProcessStartInfo
填充所需的信息。
public int Build(string solutionFile, string solutionConfig)
{
// get temp logfile path
string logFileName = System.IO.Path.GetTempFileName();
// populate process environment
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo();
psi.FileName =@"devenv.exe";
psi.ErrorDialog = true;
psi.Arguments = "\"" +solutionFile +"\"" +
@" /rebuild "+ solutionConfig
+ " /out " + logFileName;
现在我们启动进程并等待退出。
// start process
System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
// instruct process to wait for exit
p.WaitForExit();
// get return code
int exitCode = p.ExitCode;
// free process resources
p.Close();
如果 devenv.exe 没有返回零,我们将构建日志显示给用户。
// if there was a build error, display build log to console
if (exitCode != 0)
{
System.IO.TextReader reader = System.IO.File.OpenText(logFileName);
errorLog = reader.ReadToEnd();
reader.Close();
//
System.Console.WriteLine(errorLog);
System.Console.WriteLine("Hit enter to abort...");
System.Console.Read();
}
// delete temp logfile
System.IO.File.Delete(logFileName);
最后但并非最不重要的一点是,我们返回代码。
// return process exit code
return exitCode;
}
构建批处理
- 在解决方案文件所在的目录中创建一个新的文本文件,请务必将扩展名从.txt更改为.bat。 如果您在资源管理器中看不到扩展名,请在工具/选项/视图中更改资源管理器设置以显示扩展名。
- 不要双击该文件进行编辑,使用上下文菜单项编辑或将其拖到像记事本这样的文本编辑器中。
- 添加行
VsBuilderHelper.exe 解决方案文件名.sln 解决方案配置
,其中解决方案配置通常是 debug 或 release。 - 保存文件并关闭记事本。
- 现在双击你的 *.bat 文件。 如果一切顺利,控制台会在一段时间后关闭,否则会显示构建日志。
使用构建项目扩展上下文菜单
- 打开资源管理器,打开工具/选项。
- 切换到“文件类型”选项卡。
- 搜索 sln 扩展名,键入 sln 以快速查找。
- 单击扩展按钮(每个 Windows 版本都有另一个对话框用于此)。
- 在属性对话框中单击新建。
- 为此项目选择一个名称,例如
Build Debug
- 在路径字段中,键入:
"VsBuilderHelper.exe" "%1" 解决方案配置
,其中解决方案配置通常是 debug 或 release。 如果你的 VsBuilderHelper.exe 不在路径环境中,请指定 VsBuilderHelper.exe 的完整路径。 - 关闭对话框并转到任何解决方案,右键单击解决方案文件并选择你的菜单项。 如果一切顺利,控制台会在一段时间后关闭,否则会显示构建日志。
玩得开心...
修订历史
16.12.2002
- 修复了包含空格的项目路径的错误。
- 构建日志存储在临时文件中。
- 控制台应用程序将进程退出代码返回给调用者。
14.12.2002
- 添加了控制台应用程序BuilderHelper。
- 删除了直接
devenv
调用示例。