我们使用 Web Deploy 3 的(几乎完全未记录的)“公共 API”来创建我们网站的 .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)。
通过添加/p:VisualStudioVersion=11.0标志(这会导致不同的 Web 应用程序目标文件成为使用它以某种方式允许部署 .NET 4.5 应用程序)。
有谁知道为什么 Web Deploy API 会这样抱怨以及如何以与 MSBuild 解决方案相同的方式解决此错误?