sách gpt4 ai đã đi

c# - Web 部署 API - 部署 .NET 4.5 应用程序

In lại 作者:可可西里 更新时间:2023-11-01 08:22:52 30 4
mua khóa gpt4 Nike

我们正在使用 Web Deploy 3 的(几乎完全未记录的)“公共(public) 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 之前,此代码一直运行良好。现在我们收到以下错误:

The application pool that you are trying to use has the 'managedRuntimeVersion' property set to 'v4.0'. This application requires 'v4.5'. Learn more at: 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 标志(这会导致使用不同的 Web 应用程序目标文件,以某种方式允许部署 .NET 4.5 应用程序)。

有谁知道为什么 Web Deploy API 会这样提示,以及我如何以与 MSBuild 解决方案相同的方式解决此错误?

1 Câu trả lời

最简单的方法可能是将 Microsoft.Web.Publishing.targets 中的 IgnoreDeployManagedRuntimeVersion 属性包含到 .csproj 中,或者在/t:package 步骤中作为 MSBuild 的参数。其他选项可能是项目根目录中的 parameters.xml,以使 managedRuntimeVersion 可被 MSDeploy 参数覆盖,或者直接在 archive.xml 的 .zip 中将其设置为预部署步骤。

更新(太长无法作为评论回复):

好吧,它不像 VS 2012 本身所做的那么简单。从 VS(Web 部署选项)发布到 IIS,它将生成的包将是临时文件夹的内容和参数 xml,而不是您在进行通用打包时获得的 zip,并且将设置运行时版本到 4,即使项目是 4.5。 IgnoreDeployManagedRuntimeVersion 将完全忽略它。如果您从 VS 执行 Web Deploy Package 选项,您将在 archive.xml 中获得一个 4.5 的 zip,如果您尝试手动将该 VS 输出的 zip 直接导入 IIS,您将收到 4.0 vs 4.5 应用程序池的错误弹出窗口错误,与从命令行运行 msbuild/t:package 和 msdeploy :sync 得到的错误相同。 VS (devenv) 没有做到“正确”,它悄悄地覆盖了项目设置,这不是 MSDeploy 的错,因为版本是在编译/打包 (MSBuild/devenv) 期间设置的,而不是在部署期间设置的。

顺便说一句,关于 API 文档,是的,它们实际上不存在,但我发现命令行文档是可以接受的(称为 Web 部署而不是 MSDeploy,例如 http://technet.microsoft.com/en-us/library/dd569089.aspx 和其他)并将它们映射到 dotPeek 输出有点帮助。

关于c# - Web 部署 API - 部署 .NET 4.5 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13582906/

30 4 0
可可西里
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com