65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.35/5 (14投票s)

2002年12月9日

CPOL

3分钟阅读

viewsIcon

234019

downloadIcon

1060

展示如何从命令行或通过上下文菜单项构建解决方案文件。

Sample Image - builditemincontextmenu.jpg

引言

这篇小文章可以给你一个提示,告诉你如何快速构建你的解决方案文件,而无需运行 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 文件。 如果一切顺利,控制台会在一段时间后关闭,否则会显示构建日志。

使用构建项目扩展上下文菜单

  • 打开资源管理器,打开工具/选项。

File Extension Dialog

  • 切换到“文件类型”选项卡。
  • 搜索 sln 扩展名,键入 sln 以快速查找。
  • 单击扩展按钮(每个 Windows 版本都有另一个对话框用于此)。
  • 在属性对话框中单击新建
  • 为此项目选择一个名称,例如 Build Debug
  • 在路径字段中,键入:"VsBuilderHelper.exe" "%1" 解决方案配置,其中解决方案配置通常是 debug 或 release。 如果你的 VsBuilderHelper.exe 不在路径环境中,请指定 VsBuilderHelper.exe 的完整路径。
  • 关闭对话框并转到任何解决方案,右键单击解决方案文件并选择你的菜单项。 如果一切顺利,控制台会在一段时间后关闭,否则会显示构建日志。

玩得开心...

修订历史

16.12.2002

  • 修复了包含空格的项目路径的错误。
  • 构建日志存储在临时文件中。
  • 控制台应用程序将进程退出代码返回给调用者。

14.12.2002

  • 添加了控制台应用程序BuilderHelper
  • 删除了直接 devenv 调用示例。
© . All rights reserved.