我们正在使用几乎未经记录的 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是一种“原地”升级,用新版本号.30319替换了4.0 DLL)。
通过添加/p:VisualStudioVersion=11.0标志(导致使用不同的Web应用程序目标文件,以某种方式允许部署.NET 4.5应用程序),可以通过MSBuild.exe命令行(而不是创建包,而是直接同步到服务器)解决此问题。
是否有人知道为什么Web Deploy API会出现这样的问题,以及如何像MSBuild解决方案一样解决此错误?