ASP.NET CORE MVC使用SCD(独立部署)发布

简介

Self-contained deployments (SCD), 生成一个可自己执行的文件以及所有依赖, 比如一个xxx.exe和一大堆dll, 直接运行即可, 不需要操作系统安装.net core 运行时.

步骤

1、首先创建一个ASP.NET CORE MVC项目

2、右击项目,点击编辑xxx.csproj,在下编辑

 <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeIdentifiers>win10-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
  </PropertyGroup>

这样在发布时选择平台时会有win10-x64可以选择

3、要让远程电脑能访问,必须更改可访问的IP地址。在Program.cs文件下更改如下代码,在原有代码下添加.UseUrls()即可

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseUrls("http://*:5000")
                .UseStartup<Startup>();

4、右键项目,点击发布,选择文件夹

5、选择高级,---独立,-----win10-64

6、点击保存,发布即可。

7、发布之后,在生成目录下会有xxx.exe文件生成,点击运行,即可启动服务。

优点

SCD 有很多优点。尽管有多个使 SCD 工作的部分,但作为 .NET CLI 安装的一部分,有两个使其正常运行的重要组件。第一个组件是共享运行时,它是 .NET Core 运行时的可再发行版本,由 CLI 和最终用户使用。第二个组件是共享主机,它负责使用作为发布过程的一部分生成的 DLL。共享主机是泛型 AppHost,它允许任何 .NET Core 库 (DLL) 作为应用程序执行。在执行“dotnet run my.dll”时,my.dll 被托管在此共享主机的内部。在打包 SCD 应用程序时,执行的操作是将共享运行时、共享主机和应用程序 DLL 置于可执行文件包中、适用于 Windows 的 .exe 中或适用于 Linux 和 macOS 的相应可执行文件中。