8

У меня есть проект, который я строю с помощью следующей команды в Zsh на Windows 10 машины:Визуальный Devenv Студия 2013 не удается построить проект, когда не авторизованы на Windows 10

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

Если я запустить его локально в терминал, он всегда работает. Однако я запускаю его через планировщик задач, а иногда через (cygwin) ssh. Он по-прежнему работает, но только если я фактически зарегистрирован на компьютере локально или с сеансом удаленного рабочего стола.

Если команда выполняется, когда пользователь подписывается, я вижу следующее сообщение:

Microsoft Visual Studio была обнаружена проблема с настройкой. Чтобы исправить , перезагрузите его как Администратор. Для получения дополнительной информации, пожалуйста, : http://go.microsoft.com/fwlink/?LinkId=320596

Пример использования ssh.

  1. Я вхожу в физической машине
  2. Я SSH в указанную машину
  3. команду Run. Работает отлично.
  4. Выйти на физическую машину
  5. Команда запуска в той же сессии ssh. Не удается.

Когда я говорю «физическая машина», я имею в виду хост-компьютер, в котором выполняется команда.

У меня есть до настоящего времени для Windows 10 Professional машины и до настоящего времени Visual Studio 2013.

Он также завершается неудачно, если команда выполняется с помощью планировщика задач Windows (набор для работы, когда не вошли в систему с наивысшими правами) , в то время как пользователь выйдет из системы.

Установка devenv всегда открыта как Администратор (используя все методы, которые я видел на S.O.) не помогает. Отключение UAC не помогает.

Я бы предпочел просто оставить машину в журнале все время, однако проблема также возникает после сеанса удаленного рабочего стола: - Если я удаленный рабочий стол на этом компьютере, команда продолжает работать, пока у меня есть удаленный сеанс open (даже через ssh и планировщик задач), но как только я отключу сеанс rdp, он перестает работать.

Редактировать: Правильный профиль пользователя загружен в точке выполнения, а журнал активности devenv не обнаруживает ошибок или предупреждений. Журнал просто показывает, что devenv выходит после Client rights determined.

Edit: Я проверил @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 нуждается в правильном профиле пользователя для загрузки в run.Maybe related: 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

ответ

4

Если вы используете MSBuild вместо Devenv то он будет работать

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

Это приведет к восстановлению всего решения, а не проекта. См. Http://stackoverflow.com/questions/13915636/specify -project-file-of-a-solution-using-msbuild для командной строки для проекта и 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

-1

убедитесь, что этот параметр настроен enter image description here

+2

У меня есть этот комплект.Извините, это то, что я имел в виду, когда я сказал «планировщик задач Windows (настроен на работу, когда он не вошел в систему»). И это не проблема с запущенной задачей. Он работает, но команда не работает. Я получаю то же самое через ssh .Это, кажется, не зависит от планировщика задач и что-то делать с проблемами devenv (VS) или Windows 10. – Jools

2

планировщик задача регистрирует пользователь, с неинтерактивной сессией. То же самое можно использовать для сеанса SSH. Это означает, что размер выделенной кучи и размер выделяемой памяти меньше, чем для интерактивного входа. Возможно, вы столкнулись с ограничениями памяти.

Либо увеличьте размер выделенной кучи (see also this question), либо используйте учетную запись службы для запуска задания компиляции.

+0

Если это была проблема, разве вы не ожидаете, что она будет последовательно терпеть неудачу при построении через ssh или планировщик задач? Что вызывает недоумение, так это то, что он никогда не сможет построить через ssh или планировщик задач, пока пользователь также будет подписан в экземпляре, когда запускается команда сборки, независимо от того, когда началось задание или сеанс ssh. Могут ли сеансы динамически переключаться между интерактивными и неинтерактивными? – Jools

+1

Если вы уже вошли в систему, уже существует интерактивный сеанс, и планировщик задач или SSH могут просто использовать этот сеанс. Они, конечно, не выходят из вашей учетной записи пользователя, чтобы начать неинтерактивный сеанс. – Simmetric

+0

Я тестировал увеличение размера кучи на то же, что и на интерактивный сеанс, но это не изменило поведения для этой проблемы. Я уверен, что то, что я вижу, должно быть специфичным для того, что devenv делает при запуске, поскольку эти несколько проектов являются частью гораздо более крупной компиляционной работы, и они всегда являются единственными, что может пойти не так. – Jools

0

Это не ответ, но я столкнулся с аналогичной проблемой на Visual Studio 2015 на самом деле пытается построить UWP проект:

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

После того, как я вошел в систему, все работает отлично, но с использованием ssh он уже терпит неудачу при проверках компилятора.