Visual Studio 2013 devenv 在 Windows 10 上未登录时无法构建项目

Visual Studio 2013 devenv fails to build project when not signed in on Windows 10

我有一个项目,我在 Windows 10 机器上的 zsh 中使用以下命令构建:

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

如果我 运行 在终端本地使用它,它总是有效。然而,我通过任务调度程序 运行 宁它,有时通过 (cygwin) ssh。它仍然有效,但前提是我实际在本地或通过远程桌面会话登录到计算机。

如果用户注销时命令是 运行,我会看到以下消息:

Microsoft Visual Studio has detected a configuration issue. To correct this, please restart as Administrator. For more information please visit: http://go.microsoft.com/fwlink/?LinkId=320596

使用 ssh 的示例。

  1. 我登录物理机
  2. 我通过 ssh 进入所述机器
  3. 运行 命令。工作正常。
  4. 在物理机上注销
  5. 运行 命令在同一个 ssh 会话中。失败。

当我说"physical machine"时,我指的是命令所在的主机运行。

我有一台最新的 Windows 10 Professional 机器和最新的 Visual Studio 2013。

如果命令是 运行 通过 windows 任务调度程序(设置为在未以最高权限登录时工作),同时用户已注销,它也会失败。

将 devenv 设置为始终以管理员身份打开(使用我在 S.O. 上看到的所有方法)没有帮助。 禁用 UAC 没有帮助。

我会选择让机器一直保持登录状态,但是在远程桌面会话之后也会出现问题:- 如果我远程桌面进入那台机器,命令会继续工作,而我有远程会话打开(甚至通过 ssh 和任务调度程序),但是一旦我断开 rdp 会话,它就会停止工作。

编辑: 在执行时加载正确的用户配置文件并且 devenv activity 日志显示没有错误或警告。日志仅显示 devenv 在 Client rights determined.

后退出

编辑: 我已经测试了 解决方案,它似乎适用于我使用以下解决方案构建的所有项目:

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 会话结束时重新启动,确保我始终有一个交互式会话,这肯定比我当前的解决方法要好。

确保您已配置此选项

如果您使用 msbuild 而不是 devenv,那么它将起作用

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

任务计划程序使用 non-interactive 会话登录用户。您的 SSH 会话可能也是如此。这意味着分配的堆大小和可分配内存大小小于交互式登录。您可能 运行 遇到内存限制。

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

这不是答案,但我在 Visual Studio 2015 实际尝试构建 UWP 项目时遇到了类似的问题:

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

登录后,一切正常,但使用 ssh 时编译器检查已经失败。