use*_*326 5 deployment asp.net-mvc .net-core asp.net-core asp.net-core-2.0
我想.exe在Visual Studio 2017中创建Kestrel独立的DotNetCore 2.0 MVC Web API应用程序,但是我找不到任何文档.关于如何将其编译为自包含.exe(不使用dotnet run).
这里的Microsoft文档:https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/deploy-with-vs仅涵盖控制台应用程序,并且对.csproj的修改没有任何区别
<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
Run Code Online (Sandbox Code Playgroud)
(注意这不是.NET Core 1.x问题)
dotnet publish命令负责打包可部署的.Net Core应用程序.它将构建应用程序并将其所有依赖项复制到输出目录.
最简单的方法是切换到项目目录(csproj所在的目录)并执行:
dotnet发布 - 配置发布 - 运行时win-x64
根据您的需要更改构建配置和运行时版本.您可以在我引用的文档上学习其他命令行设置.
根据这个答案:
目前,没有用于创建单个可执行文件的故障安全方法.由于涉及很多类型转发dll文件,即使ILMerge和类似工具也可能无法产生正确的结果(尽管这可能会有所改进,但问题是这些方案未经过大量测试,尤其是在生产应用程序中)
目前有两种部署.NET Core应用程序的方法:
- 作为"可移植应用程序"/"依赖于框架的应用程序",需要
dotnet在目标机器上安装可执行文件并安装框架.这里,XYZ.runtimeconfig.json它用于确定要使用的框架版本,还指定运行时参数.此部署模型允许在各种平台(windows,linux,mac)上运行相同的代码- 作为"自包含应用程序":这里整个运行时包含在已发布的输出中,并生成可执行文件(例如
yourapp.exe).此输出特定于平台(通过运行时标识符设置),并且只能在目标操作系统上运行.但是,生成的可执行文件只是一个小垫片,可以启动运行时并加载应用程序的主dll文件.这也允许XYZ.runtimeconfig.json设置其他运行时属性,如垃圾收集设置.(将其视为"新"app.config文件)将来,CoreRT运行时(在编写本文时仍在开发中)旨在允许创建特定于运行时的单个预编译本机可执行文件,而不需要任何其他文件.
虽然这个问题在6个多月前(由您真实地提出),但看起来CoreRT仍在进行中.
部署自包含部署有两个主要优点:
您可以单独控制随应用程序部署的.NET Core版本..NET Core只能由您提供服务.
您可以放心,目标系统可以运行您的.NET Core应用程序,因为您提供了将运行的.NET Core版本.
它也有许多缺点:
由于.NET Core包含在部署包中,因此必须提前选择要为其构建部署包的目标平台.
部署包的大小相对较大,因为您必须包含.NET Core以及您的应用程序及其第三方依赖项.
将大量独立的.NET Core应用程序部署到系统可能会占用大量磁盘空间,因为每个应用程序都会复制.NET Core文件.
我意识到您已经找到了Microsoft部署文档,但是如果您通过命令行和Visual Studio部署的演练,您会注意到他们告诉您在过程中使用dotnet发布.这与ASP.NET Core应用程序完全相同,因为它们可以部署为控制台应用程序.
总之,它有可能使一个自包含的部署包有.exe文件,但它是不是(还)有可能使一个自包含的EXE .NET的核心.
| 归档时间: |
|
| 查看次数: |
4727 次 |
| 最近记录: |