如果没有桌面会话,devenv.com将无法启动

时间:2017-01-25 14:09:38

标签: windows jenkins visual-studio-2015 continuous-integration

我正在为Windows 10应用程序设置Jenkins作业。 我需要使用devenv.com可执行文件编译解决方案中的四个项目之一,因为它是一个带有.vdproj扩展名的项目(安装项目)。 其他项目使用MSBuild成功构建,没有任何问题。

当我以Jenkins目标节点上的root身份登录时,Jenkins作业成功结束,但是,当我从Jenkins运行作业并且我没有登录时失败。

需要您的帮助或解决方法来解决问题。

PS:我们使用ant作为任务运行器,我们有一个特定的任务来启动构建过程。

编辑26/01/2017

我想提供其他信息,例如错误消息和我之前跳过的一个步骤。

错误消息提供指向Microsoft Page的链接并报告配置问题。

通过此StackOverflow帖子解决了,我在

下添加了一个新的DWORD注册表项
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild

问题是,当用户没有登录时,无法呈现此值吗?

编辑27/01/2017

我对这个问题感到很疯狂。

命令devenv /?在我本地运行时工作正常,但是当我从Jenkins运行它时会出现与以前相同的错误: Microsoft Visual Studio发现配置问题。要修复此问题,请以管理员身份重新启动,或访问http://go.microsoft.com/fwlink/?LinkId=659046以获取更多信息。

所以当我没有登录时,devenv.com无法执行?

2017年1月31日更新#

这是我的.bat文件,由ant build.xml从目标调用

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat"

@set MSBUILD="C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe"

%MSBUILD%  "%cd%\src\AutomatedSetupBuild.proj"

pause

AutomatedSetupBuild.proj MSBuild脚本

的位置
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">

<Target Name="Build">
  <PropertyGroup>
        <DevEnv>C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.com</DevEnv>
        <SolutionFile>$(MSBuildProjectDirectory)\MySolution.sln</SolutionFile>
        <ProjectFile>MySetupProject\MySetupProject.vdproj</ProjectFile>
        <Configuration>Release</Configuration>
</PropertyGroup>

<Exec
      Command="&quot;$(DevEnv)&quot; &quot;$(SolutionFile)&quot; /Rebuild &quot;$(Configuration)&quot; /Project &quot;$(ProjectFile)&quot; /ProjectConfig &quot;$(Configuration)&quot; /Log vs.log /useenv"
      ContinueOnError="false"
     IgnoreExitCode="false"
     WorkingDirectory="$(MSBuildProjectDirectory)" />
 </Target>
</Project>

如您所见,我在运行devenv.com之前加载了环境变量,但是我收到了同样的错误。

3 个答案:

答案 0 :(得分:1)

您是使用自由风格的作业还是将Jenkins文件用于管道项目?无论如何,要使devenv.com工作,必须设置环境变量。

请转到Windows开始菜单,查找类似Visual Studio XX的内容 - &gt; Visual Studio工具 - &gt; VS20XX的开发人员命令提示符。按鼠标右键并选择属性。寻找目标。在我的例子中,该字段包含以下字符串:

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat""

如果您使用例如一个Jenkins文件,将调用更改为devnenv.com,这可能看起来像

bat "devenv.com my_solution_file.sln /project my_project /build  \"Release|x64\""

bat "call \"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat\"; devenv.com my_solution_file.sln /project my_project /build  \"Release|x64\""

重要的是,对VsDevCmd.bat的调用是在同一个bat命令中。否则,环境变量设置会丢失,并且第二次调用bat时不会看到它。

答案 1 :(得分:0)

打开dev命令提示符,输入“ where devenv”,然后使用.com版本调用完整路径...例如

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.com" /Rebuild "RELEASE|Win32" "F:\project.sln"

答案 2 :(得分:0)

就我而言,我必须将Visual Studio 2015 SSRS项目转换为SSRS Visual Studio2017。然后,我为VS 2017安装了2017 SSDT,并使用了MSBUILD。没有开放的远程会话,一切都可以正常工作。