使用 Visual Studio 部署 .NET Core 应用

可将 .NET Core 应用程序部署为依赖框架的部署或独立部署,前者包含应用程序二进制文件,但依赖目标系统上存在的 .NET Core,而后者同时包含应用程序和 .NET Core 二进制文件。 有关 .NET Core 应用程序部署的概述,请参阅 .NET Core 应用程序部署

以下各节演示如何使用 Microsoft Visual Studio 创建下列各类部署:

  • 依赖框架的部署
  • 包含第三方依赖项的依赖框架的部署
  • 独立部署
  • 包含第三方依赖项的独立部署

有关使用 Visual Studio 开发 .NET Core 应用程序的信息,请参阅 Windows 上 .NET Core 的先决条件

依赖框架的部署

如果不使用第三方依赖项,部属依赖框架的部署只包括生成、测试和发布应用。 一个用 C# 编写的简单示例可说明此过程。

  1. 创建项目。

    选择“文件” > “新建” > “项目”。 在“新建项目”对话框中,在“已安装”项目类型窗格中选择“.NET Core”,然后在中心窗格中选择“控制台应用(.NET Core)”模板。 在“名称”文本框中输入项目名称,如“FDD”。 选择“确定”按钮。

  2. 添加应用程序的源代码。

    在编辑器中打开 Program.cs 文件,然后使用下列代码替换自动生成的代码。 它会提示用户输入文本,并显示用户输入的个别词。 它使用正则表达式 \w+ 来将输入文本中的词分开。

    C#复制
    using System;
    using System.Text.RegularExpressions;
    
    namespace Applications.ConsoleApps
    {
        public class ConsoleParser { public static void Main() { Console.WriteLine("Enter any text, followed by <Enter>:\n"); String s = Console.ReadLine(); ShowWords(s); Console.Write("\nPress any key to continue... "); Console.ReadKey(); } private static void ShowWords(String s) { String pattern = @"\w+"; var matches = Regex.Matches(s, pattern); if (matches.Count == 0) { Console.WriteLine("\nNo words were identified in your input."); } else { Console.WriteLine($"\nThere are {matches.Count} words in your string:"); for (int ctr = 0; ctr < matches.Count; ctr++) { Console.WriteLine($" #{ctr,2}: '{matches[ctr].Value}' at position {matches[ctr].Index}"); } } } } } 
  3. 创建应用的调试版本。

    选择“生成” > “生成解决方案”。 也可通过选择“调试” > “开始调试”来编译和运行应用程序的调试版本。

  4. 部署应用。

    调试并测试程序后,创建要与应用一起部署的文件。 若要从 Visual Studio 发布,请执行以下操作:

    1. 将工具栏上的解决方案配置从“调试”更改为“发布”,生成应用的发布(而非调试)版本。

    2. 在“解决方案资源管理器”中右键单击项目(而非解决方案),然后选择“发布”。

    3. 在“发布”选项卡上,选择“发布”。 Visual Studio 将包含应用程序的文件写入本地文件系统。

    4. “发布”选项卡现在显示单个配置文件 FolderProfile。 该配置文件的配置设置显示在选项卡的“摘要”部分。

    生成的文件位于名为 PublishOutput 的目录中,该目录位于项目的 .\bin\release 子目录的子目录中。

与应用程序的文件一起,发布过程将发出包含应用调试信息的程序数据库 (.pdb) 文件。 该文件主要用于调试异常。 可以选择不使用应用程序文件打包该文件。 但是,如果要调试应用的发布版本,则应保存该文件。

可以采用任何喜欢的方式部署完整的应用程序文件集。 例如,可以使用简单的 copy 命令将其打包为 Zip 文件,或者使用选择的安装包进行部署。 安装成功后,用户可通过使用 dotnet 命令或提供应用程序文件名(如 dotnet fdd.dll)来执行应用程序。

除应用程序二进制文件外,安装程序还应捆绑共享框架安装程序,或在安装应用程序的过程中将其作为先决条件进行检查。 安装共享框架需要管理员/根访问权限,因为它属于计算机范围。

包含第三方依赖项的依赖框架的部署

要使用一个或多个第三方依赖项来部署依赖框架的部署,需要任何依赖项都可供项目使用。 在生成应用之前,还需执行以下额外步骤:

  1. 使用 NuGet 包管理器向项目添加对 NuGet 包的引用;如果系统上还没有此包,请先安装它。 要打开包管理器,请选择“工具” > “NuGet 包管理器” > “管理解决方案的 NuGet 包”。

  2. 确认已在系统中安装 Newtonsoft.Json,如果尚未安装,请先安装它。 “已安装”选项卡列出了系统中已安装的 NuGet 包。 如果此处未列出 Newtonsoft.Json,请选择“浏览”选项卡,然后在搜索框中输入“Newtonsoft.Json”。 选择 Newtonsoft.Json,在右侧窗格中选择项目,然后选择“安装”。

  3. 如果系统中已安装 Newtonsoft.Json,请在“管理解决方案包”选项卡的右侧窗格中选择项目,将该项添加到项目。

请注意,如果依赖框架的部署具有第三方依赖项,则其可移植性只与第三方依赖项相同。 例如,如果某个第三方库只支持 macOS,该应用将无法移植到 Windows 系统。 当第三方依赖项本身取决于本机代码时,也可能发生此情况。 Kestrel 服务器就是一个很好的示例,它需要 libuv 的本机依赖项。 当为具有此类第三方依赖项的应用程序创建 FDD 时,已发布的输出会针对每个本机依赖项支持(存在于 NuGet 包中)的运行时标识符 (RID) 包含一个文件夹。

不包含第三方依赖项的独立部署

部署没有第三方依赖项的独立部署包括创建项目、修改 csproj 文件、生成、测试以及发布应用。 一个用 C# 编写的简单示例可说明此过程。

  1. 创建项目。

    选择“文件” > “新建” > “项目”。 在“添加新项目”对话框中,在“已安装”项目类型窗格中选择“.NET Core”,然后在中心窗格中选择“控制台应用(.NET Core)”模板。 在“名称”文本框中输入项目名称如“SCD”,然后选择“确定”按钮。

  2. 添加应用程序的源代码。

    在编辑器中打开 Program.cs 文件,然后使用下列代码替换自动生成的代码。 它会提示用户输入文本,并显示用户输入的个别词。 它使用正则表达式 \w+ 来将输入文本中的词分开。

    C#复制
    using System;
    using System.Text.RegularExpressions;
    
    namespace Applications.ConsoleApps
    {
        public class ConsoleParser { public static void Main() { Console.WriteLine("Enter any text, followed by <Enter>:\n"); String s = Console.ReadLine(); ShowWords(s); Console.Write("\nPress any key to continue... "); Console.ReadKey(); } private static void ShowWords(String s) { String pattern = @"\w+"; var matches = Regex.Matches(s, pattern); if (matches.Count == 0) { Console.WriteLine("\nNo words were identified in your input."); } else { Console.WriteLine($"\nThere are {matches.Count} words in your string:"); for (int ctr = 0; ctr < matches.Count; ctr++) { Console.WriteLine($" #{ctr,2}: '{matches[ctr].Value}' at position {matches[ctr].Index}"); } } } } } 
  3. 定义应用的目标平台。

    1. 在“解决方案资源管理器”中右键单击项目(而非解决方案),然后选择“编辑 SCD.csproj”。

    2. 在 csproj 文件(该文件用于定义应用的目标平台)的 <PropertyGroup> 部分中创建 <RuntimeIdentifiers> 标记,然后指定每个目标平台的运行时标识符 (RID)。 请注意,还需要添加分号来分隔 RID。 请查看运行时标识符目录,获取运行时标识符列表。

    例如,以下示例表明应用在 64 位 Windows 10 操作系统和 64 位 OS X 10.11 版本的操作系统上运行。

XML复制
<PropertyGroup>
    <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers> </PropertyGroup> 

请注意,<RuntimeIdentifiers> 元素可能会进入 csproj 文件的任何 <PropertyGroup> 中。 本节后面部分将显示完整的示例 csproj 文件。

  1. 创建应用的调试版本。

    选择“生成” > “生成解决方案”。 也可通过选择“调试” > “开始调试”来编译和运行应用程序的调试版本。

  2. 发布你的应用。

    调试并测试程序后,为应用的每个目标平台创建要与应用一起部署的文件。

    若要从 Visual Studio 发布应用,请执行以下操作:

    1. 将工具栏上的解决方案配置从“调试”更改为“发布”,生成应用的发布(而非调试)版本。

    2. 在“解决方案资源管理器”中右键单击项目(而非解决方案),然后选择“发布”。

    3. 在“发布”选项卡上,选择“发布”。 Visual Studio 将包含应用程序的文件写入本地文件系统。

    4. “发布”选项卡现在显示单个配置文件 FolderProfile。 该配置文件的配置设置显示在选项卡的“摘要”部分。目标运行时用于标识已发布的运行时,目标位置用于标识独立部署文件的写入位置。

    5. 默认情况下,Visual Studio 将所有已发布文件写入单个目录。 为了方便起见,最好为每个目标运行时创建单个配置文件,并将已发布文件置于特定于平台的目录中。 这包括为每个目标平台创建单独的发布配置文件。 现在,请执行下列操作,为每个平台重新生成应用程序:

      1. 在“发布”对话框中选择“创建新配置文件”。

      2. 在“选取发布目标”对话框中,将“选择文件夹”位置更改为 bin\Release\PublishOutput\win10-x64。 选择“确定”。

      3. 在配置文件列表中选择新配置文件 (FolderProfile1) ,并确保“目标运行时”为 win10-x64。 如果不是,请选择“设置”。 在“配置文件设置”对话框中,将“目标运行时”更改为 win10-x64,然后选择“保存”。 否则,选择“取消”。

      4. 选择“发布”,发布 64 位 Windows 10 平台的应用。

      5. 请再次按照上述步骤创建 osx.10.11-x64 平台的配置文件。 “目标位置”为 bin\Release\PublishOutput\osx.10.11-x64,“目标运行时”为 osx.10.11-x64。Visual Studio 分配给此配置文件的名称是 FolderProfile2。

    请注意,每个目标位置中都包含启动应用所需的完整文件集(既包含应用文件,又包含所有 .NET Core 文件)。

与应用程序的文件一起,发布过程将发出包含应用调试信息的程序数据库 (.pdb) 文件。 该文件主要用于调试异常。 可以选择不使用应用程序文件打包该文件。 但是,如果要调试应用的发布版本,则应保存该文件。

可按照任何喜欢的方式部署已发布的文件。 例如,可以使用简单的 copy 命令将其打包为 Zip 文件,或者使用选择的安装包进行部署。

下面是此项目完整的 csproj 文件。

XML复制
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp1.1</TargetFramework> <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers> </PropertyGroup> </Project> 

包含第三方依赖项的独立部署

部署包含一个或多个第三方依赖项的独立部署包括添加依赖项。 在生成应用之前,还需执行以下额外步骤:

  1. 使用 NuGet 包管理器向项目添加对 NuGet 包的引用;如果系统上还没有此包,请先安装它。 要打开包管理器,请选择“工具” > “NuGet 包管理器” > “管理解决方案的 NuGet 包”。

  2. 确认已在系统中安装 Newtonsoft.Json,如果尚未安装,请先安装它。 “已安装”选项卡列出了系统中已安装的 NuGet 包。 如果此处未列出 Newtonsoft.Json,请选择“浏览”选项卡,然后在搜索框中输入“Newtonsoft.Json”。 选择 Newtonsoft.Json,在右侧窗格中选择项目,然后选择“安装”。

  3. 如果系统中已安装 Newtonsoft.Json,请在“管理解决方案包”选项卡的右侧窗格中选择项目,将其添加到项目。

下面是此项目的完整 csproj 文件:

XML复制
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp1.1</TargetFramework> <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers> </PropertyGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="10.0.2" /> </ItemGroup> </Project> 

部署应用程序时,应用中使用的任何第三方依赖项也包含在应用程序文件中。 运行应用的系统上不需要第三方库。

请注意,可以只将具有一个第三方库的独立部署部署到该库支持的平台。 这与依赖框架的部署中具有本机依赖项和第三方依赖项相似,其中的本机依赖项不会存在于目标平台上,除非之前在该平台上安装了该依赖项。

 

详细链接:https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-vs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值