我正在为Windows 10应用程序设置Jenkins作业。 我需要使用devenv.com可执行文件编译解决方案中的四个项目之一,因为它是一个带有.vdproj扩展名的项目(安装项目)。 其他项目使用MSBuild成功构建,没有任何问题。
当我以Jenkins目标节点上的root身份登录时,Jenkins作业成功结束,但是,当我从Jenkins运行作业并且我没有登录时失败。
需要您的帮助或解决方法来解决问题。
PS:我们使用ant作为任务运行器,我们有一个特定的任务来启动构建过程。
我想提供其他信息,例如错误消息和我之前跳过的一个步骤。
错误消息提供指向Microsoft Page的链接并报告配置问题。
通过此StackOverflow帖子解决了,我在
下添加了一个新的DWORD注册表项HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0_Config\MSBuild\EnableOutOfProcBuild
问题是,当用户没有登录时,无法呈现此值吗?
我对这个问题感到很疯狂。
命令devenv /?
在我本地运行时工作正常,但是当我从Jenkins运行它时会出现与以前相同的错误: Microsoft Visual Studio发现配置问题。要修复此问题,请以管理员身份重新启动,或访问http://go.microsoft.com/fwlink/?LinkId=659046以获取更多信息。
所以当我没有登录时,devenv.com无法执行?
这是我的.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=""$(DevEnv)" "$(SolutionFile)" /Rebuild "$(Configuration)" /Project "$(ProjectFile)" /ProjectConfig "$(Configuration)" /Log vs.log /useenv"
ContinueOnError="false"
IgnoreExitCode="false"
WorkingDirectory="$(MSBuildProjectDirectory)" />
</Target>
</Project>
如您所见,我在运行devenv.com之前加载了环境变量,但是我收到了同样的错误。
答案 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。没有开放的远程会话,一切都可以正常工作。