【问题标题】:How do I publish a .NET Core ASP.NET website that targets framework net461?如何发布以框架 net461 为目标的 .NET Core ASP.NET 网站?
【发布时间】:2016-09-30 20:31:23
【问题描述】:

我需要发布一个针对框架 net461 的 .NET Core ASP.NET 网站。

我试过了:

dotnet publish --runtime active --output "C:\stuff\" --configuration Release

但这会导致项目作为 .exe 输出(以及 Microsoft.AspNetCore.Authorization.dll 等 dotnet 核心依赖项的 .dll)。我需要在 Windows Server 2008 R2 上发布到 IIS。

"buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true,
    "warningsAsErrors": true
},
"dependencies": {
"Microsoft.AspNetCore.Diagnostics.Elm": "0.1.0",
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
"Microsoft.AspNetCore.Authorization": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Hosting": "1.0.0",
"Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0",
"Microsoft.AspNetCore.Http.Extensions": "1.0.0",
"Microsoft.AspNetCore.Localization": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Routing": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.Session": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Caching.SqlServer": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
},

"frameworks": {
    "net461": {}
},

感谢您的帮助!

【问题讨论】:

  • 一个 .exe 将成为已发布内容的一部分,此外还有 web.config 和 iis 可以使用的一些其他 Web 工件。您可能需要添加一些额外的步骤。完整的说明请参见this article on publishing to iis
  • --output 选项有问题,删除它,它将在 bin/release/net461/publish 中发布
  • @stephen.vakil 是否可以将其发布为 .dll?如果我使用框架:netcoreapp1.0,我可以获得一个 .dll,但我需要以 net461 为目标。
  • 可能有,但我不知道。建议的部署是让 IIS 充当 Kestrel 的反向代理,这意味着将涉及exe。更多信息here 虽然它不能准确回答您的问题。
  • @johnluke.laue 如果您有一个纯 .Net Core 1.0 应用程序,您可以选择将其发布为DLL(便携式应用程序)或EXE(自包含应用程序)。根据这一点,您的 web.config 将有不同的设置让 IIS 运行应用程序。

标签: .net asp.net-core .net-core asp.net-core-1.0


【解决方案1】:

使用 .Net Core (Self-contained application) 为 IIS 获得 exe 输出非常好。

我使用以下命令发布了一个测试站点:

dotnet publish --configuration Release --output "C:\temp\net461-site"

将 IIS 指向 C:\temp\net461-site(必须有 web.config 文件),将 App Pool CLR 版本更改为 No Managed Code 并且站点可以正常工作。

【讨论】:

  • 感谢您的信息!我按照你说的做了,但现在我收到 IIS HTTP 错误 502.5 - 进程失败。我问了一个关于这个stackoverflow.com/questions/39752807/…的新问题
  • @johnluke.laue 那么我的答案是否被接受或投票? :)
  • 我得到它与 EXE 一起使用,但无论如何我可以使它成为一个 DLL 吗? @Ignas
  • 如果您使用的是纯 .Net Core 1.0,则需要为 Microsoft.NETCore.App 依赖项指定 platform 类型。但是,这似乎与net461 不兼容...
  • 知道是否兼容net462?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 2017-08-31
  • 1970-01-01
相关资源
最近更新 更多