Мы используем общедоступный API (почти полный недокументированный) для Web Deploy 3, чтобы создать пакет .zip нашего сайта и затем синхронизировать его с сервером:
DeploymentBaseOptions destinationOptions = new DeploymentBaseOptions()
{
UserName = //username,
Password = //password,
ComputerName = //a server
};
using (var deploymentObject = DeploymentManager.CreateObject(DeploymentWellKnownProvider.Package, "C:/MyWebsitePackage.zip"))
{
deploymentObject.SyncParameters.Load(packageParametersFile); \\ contains some connection string information and nothing more.
DeploymentSyncOptions syncOptions = new DeploymentSyncOptions();
syncOptions.WhatIf = false;
deploymentObject.SyncTo(destinationOptions, syncOptions);
}
Этот код работал отлично, пока мы не установили .NET 4.5 на наших серверах производства и сборки и не обновили проект, который мы развертываем до 4.5. Теперь мы получаем следующую ошибку:
Пул приложений, который вы пытаетесь использовать, имеет Свойство "managedRuntimeVersion" установлено на "v4.0". Это приложение требует "v4.5". Узнайте больше: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_APPPOOL_VERSION_MISMATCH.
На нашем сервере определенно установлен .Net 4.5, а пула приложений для веб-сайта IIS и ".NET Framework v4.0.30319" (я знаю, что он говорит v4, но .NET 4.5 - это "обновление на месте" и заменяет 4.0 DLL с новым номером версии .30319).
решить эту проблему при развертывании через командную строку MSBuild.exe(не путем создания пакета, а путем синхронизации непосредственно с сервером), добавив флаг /p:VisualStudioVersion=11.0 ( который вызывает использование другого целевого файла целевого веб-приложения, который каким-то образом позволяет развертывать приложение .NET 4.5).
Кто-нибудь знает, почему API веб-развертывания так жалуется и как я могу разрешить эту ошибку так же, как решение MSBuild?