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.