我从NAnt调用DevEnv,通常一切都很好。但是,我们偶尔会遇到一个问题,即开发人员已经添加了一个新项目并检查了解决方案文件但是要将新项目添加到源代码管理中。不确定如何,但它发生了。
在这种情况下,Visual Studio会弹出一个带有OK按钮的对话框,说明它无法找到项目文件。麻烦的是,这是在没有人正在观看的无头构建服务器上,我们唯一注意到的是构建将超时。
如果DevEnv随后退出失败,我会更喜欢它,NAnt可以选择它并且会使构建失败,这是正确的行为。
是否有办法阻止Visual Studio执行此操作,或者作为替代方案是否有任何好的验证器可用,我可以在启动DevEnv之前运行以检查它是否有可能不会因为愚蠢的对话而失败?
我调用DevEnv的原因是我需要构建部署项目,并且执行此操作(我们可以使用)的唯一方法是使用DevEnv。
解决方案:
事实证明我的构建脚本显式调用了devenv.exe。这是Visual Studio的gui形式。解决方案是删除调用的.exe部分,使命令处理优先于.exe版本的.com。 devenv.com版本不会显示对话框 - 它会在命令行上轰炸,而不是我想要的行为。
答案 0 :(得分:1)
您是否尝试过使用Visual Studio的命令行构建。如果项目不可用于命令行构建,则该过程将显示错误消息,但不会弹出UI。
示例:
devenv.com SomeSolution.sln / build
在我的机器上,对于缺少项目的解决方案,它将显示以下输出
Microsoft(R)Visual Studio版本 9.0.30729.1。版权所有(C)Microsoft Corp.保留所有权利。
解决方案中的一个或多个项目 无法加载以下内容 reaso n(s):
项目文件或网络已经存在 移动,重命名或不在您的身上 计算机。
这些项目将被标记为 Solution Explorer中无法使用 展开项目节点以显示 项目不可能的原因 装载.------ Build star ted:项目: ConsoleApplication1,配置: 调试任何CPU ------ ConsoleApplication1 - > C:\ Users \用户jaredpar \文档\ Visual Studio 2008 \ Projects \ C. onsoleApplication26 \ ConsoleApplication1 \ BIN \调试\ ConsoleApplication1.exe中 ------ Build build:Project:WpfApplication1,Configuration:Debug 任何CPU --- --- WpfApplication1 - > C:\ Users \用户jaredpar \文档\ Visual Studio 2008 \ Projects \ Conso leApplication26 \ WpfApplication1 \ BIN \调试\ WpfApplication1.exe ==========构建:2成功或最新,0失败,0跳过