MSDeploy - невозможно развернуть пакет.NET v4.5 в пуле приложений v4.0

После переноса TeamCity с одного сервера на другой, а также перехода на Visual Studio 2013 наша сборка завершается неудачно при использовании MSDeploy для передачи пакета.zip, созданного TC, в IIS.

Пул приложений, который вы пытаетесь использовать, имеет свойство "managedRuntimeVersion", установленное в "v4.0". Это приложение требует "v4.5"

Это странная ошибка, поскольку на моем сервере IIS установлен.NET 4.5, он успешно работает и развертывается в течение нескольких недель, а в пуле приложений 4.0 будет запущено приложение, нацеленное на 4.5.

К сожалению, воды загрязнены изменениями в TC и VS (2013), поэтому я не могу быть уверен в том, что стало причиной проблемы.

Примечание: на нашем сервере TC установлена ​​только Visual Studio 2012, так как я нахожусь на MSDN и получил ранний доступ к 2013 году. Это может быть причиной, но не делает проблему менее странной.

4 ответа

Решение

Я бы предпочел вообще не отключать проверку версии среды выполнения.NET (с IgnoreDeployManagedRuntimeVersion), а вместо этого неявно устанавливать версию времени выполнения через DeployManagedRuntimeVersion:

<DeployManagedRuntimeVersion>v4.0</DeployManagedRuntimeVersion>

Еще несколько подробностей: http://techblog.dorogin.com/2013/11/deploying-45-projects-with-webdeploy.html

Открыть свой .csproj файл и установите следующий элемент:

<IgnoreDeployManagedRuntimeVersion>True</IgnoreDeployManagedRuntimeVersion>

Добавление его чуть выше этого элемента помогает удобочитаемости:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

Престижность Abhishikt N. Jain за ответы с этим малоизвестным параметром конфигурации здесь:

Сбой развертывания MSBuild после обновления до.NET 4.5

Если кто-то знает, почему это происходит, пожалуйста, не стесняйтесь добавлять ответ.

Обновить

Не обращайте внимания на мои комментарии ниже. В то время как это заставило меня пройти развертывание, я получил 503 Service Unavailable когда я на самом деле пытался запустить веб-приложение. Я отказался от этого изменения, установив managedRuntimeVersion свойство обратно к v4.0 и добавил IgnoreDeployManagedRuntimeVersion в мой проект. Затем развертывание прошло успешно, и приложение заработало. Тупой...


Это произошло со мной после того, как я установил.NET Framework 4.5.1 на компьютер с Windows Server 2008 R2 SP1 (как часть обновления Powershell).

Пользовательский интерфейс IIS в Windows Server 2008 не дает возможность настройки managedRuntimeVersion свойство до v4.5 даже после установки этой версии. Однако это можно сделать в командной строке, используя appcmd утилита, как показывает ответ @3boysdad.

appcmd является эквивалентом командной строки для управления сайтами IIS, приложениями, пулами приложений и т. д. %systemroot%\system32\inetsrv\appcmd.exe но это не в PATH, как объясняется по следующей ссылке:

http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe

Я считаю, что изменение вашего проекта (через IgnoreDeployManagedRuntimeVersion или же DeployManagedRuntimeVersion свойства) является неоптимальным. Пул приложений должен быть настроен на использование версии 4.5, и единственный способ сделать это в Windows Server 2008 - это использовать appcmd полезность. @3boysdad ответ должен быть принятым ответом.

Нашел этот драгоценный камень во время охоты вокруг этой же проблемы.

appcmd set apppool /apppool.name: <your app pool> /managedRuntimeVersion:v4.5

это нужно будет выполнить в вашем каталоге \System32\inetsrv.

Другие вопросы по тегам