的Visual Studio 2013 devenv的失败建设项目时,在Windows 10

问题描述:

没有登录我有我的zsh使用以下命令建立一个Windows 10机器上的项目:的Visual Studio 2013 devenv的失败建设项目时,在Windows 10

devenv $sln -project $project -rebuild "Release|x64" 

如果我在本地运行终端,它始终有效。然而,我通过任务调度程序运行它,有时通过(cygwin)ssh运行它。它仍然有效,但只有当我实际登录到本地机器或远程桌面会话。

如果当用户退出运行的命令,我看到以下消息:

微软的Visual Studio已经检测到配置问题。要纠正 这个问题,请以管理员身份重新启动。欲了解更多信息请致电 访问:http://go.microsoft.com/fwlink/?LinkId=320596

使用ssh的示例。

  1. 我登录到物理机
  2. 我ssh到该机械
  3. 运行命令。工作正常。
  4. 在物理机器上注销
  5. 在同一ssh会话中运行命令。失败。

当我说“物理机器”时,我指的是运行命令的主机。

我有一个最新的Windows 10专业机和最新的Visual Studio 2013年

如果命令是通过Windows任务调度程序运行它也失败(集时不使用最高权限登录到工作) ,而用户登出。

将devenv设置为始终以管理员身份打开(使用我在S.O.上看到的所有方法)无济于事。 禁用UAC不起作用。

我会选择让机器始终保持登录状态,但问题也出现在远程桌面会话之后: - 如果我将远程桌面连接到该机器,则该命令在我有远程会话时继续工作打开(即使通过ssh和任务调度程序),但只要断开rdp会话就会停止工作。

编辑:正确的用户配置文件在执行时加载,devenv活动日志显示没有错误或警告。日志仅仅显示devenv在Client rights determined之后退出。

编辑:我测试过@Callan's msbuild解决方案,它似乎对使用下述溶液中所有的项目工作中产生:

msbuild $sln /t:Rebuild /p:Configuration=Release;Platform=x64 

而对单个项目进行了以下构建(Found here):

msbuild $sln /t:"$project:Rebuild" /p:Configuration=Release;Platform=x64 /p:BuildProjectReferences=false 

这不完全是解决问题的方法,因为@SimonMourier指出,它们不是等价的。这是一种解决方法,幸运的是,它适用于我,虽然它可能无法适用于所有情况,但现在看起来似乎没有更好的解决方案。

这肯定比我目前的解决方法,使机器自动登录和锁定,然后告诉我的机器在RDP会话结束时重新启动,确保我总是有一个交互式会话。

+1

Visual Studio需要一个正确的用户配置文件来加载才能运行。可能与以下相关:https://support.microsoft.com/en-us/kb/2968540。另外,您是否检查了活动日志:https://blogs.msdn.microsoft.com/visualstudio/2010/02/24/troubleshooting-extensions-with-the-activity-log/ –

+0

据我所知,正确的用户配置文件已加载。 “$ USERNAME”和“$ USERPROFILE”都按预期设置。我已经检查了日志,并且前42个条目对于失败和正在运行的版本是相同的。工作版本中的第43个条目是“输入函数CVsPackageInfo :: HrInstantiatePackage”,而在失败的构建中,程序似乎刚刚开始干净地退出“AppId已停止的注册表绕行”。第42条是'客户端权限确定:...' – Jools

+0

是的,我很确定加载了正确的用户配置文件,因为这两个日志都报告从同一个用户目录读取“客户端权限令牌”。 – Jools

如果使用devenv的MSBuild的的,而不是那么它会工作

msbuild $sln /t:Rebuild /p:Configuration=Release;Platform=x64 
+0

这将重建整个解决方案而不是项目。请参阅http://stackoverflow.com/questions/13915636/specify -project-file-of-a-solution-using-msbuild for the project line for project and http://stackoverflow.com/questions/12036112/msbuild-project-specific-targets-for-solution-does-not-work/12081931#12081931这是怎么工作的 –

+0

我发现了,我假设与问题命令等价的东西就像 'msbuild $ sln/t:“$ project:Rebuild”/ p:Configuration = Release; Platform = x64' – Jools

+1

.vdproj扩展?MSBuild无法建立这种设置p roject ...任何解决方案? – Gianpolo

确保你有这个选项配置enter image description here

+2

我有那套。对不起,这就是我说的“windows任务计划程序(在未登录时设置工作”的意思,这也不是运行任务的问题,它运行,但命令失败,我通过ssh得到了相同的结果它似乎独立于任务调度程序,并与devenv(VS)或Windows 10问题有关 – Jools

任务调度记录用户在使用非交互式会话。您的SSH会话可能也是如此。这意味着分配的堆大小和可分配的内存大小要小于交互式登录。您可能会遇到内存限制。

要么增加分配的堆大小(see also this question)要么使用服务帐户来运行编译作业。

+0

如果这是问题,难道你不希望它通过ssh或任务调度程序构建时一贯失败吗?令人费解的是,无论何时开始执行任务或ssh会话,只要用户在运行build命令的实例中登录,也永远无法通过ssh或任务计划程序进行构建。会话可以在交互式和非交互式之间动态切换吗? – Jools

+1

如果您已经登录,则已经有一个交互式会话,任务调度程序或SSH可以使用该会话。他们当然不会注销您的用户帐户来启动非交互式会话。 – Simmetric

+0

我测试了将堆大小增加到与交互式会话相同,但它并未改变此问题的行为。我相当确定我所看到的必须是特定于devenv在启动时所做的事情,因为这些项目是一个更大的编译工作的一部分,并且始终是唯一出错的地方。 – Jools

这不是一个答案,但我遇到了类似的问题上的Visual Studio 2015年实际上是试图建立一个UWP项目:

Windows UWP build on Windows 10 machine with remote ssh login and cmake

一次我登录,一切工作正常,但使用ssh在编译器检查时已经失败。