• 使用 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>:
      ");
                  String s = Console.ReadLine();
                  ShowWords(s);
                  Console.Write("
      Press 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("
      No words were identified in your input.");
                  }
                  else
                  {
                      Console.WriteLine($"
      There 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 的目录中,该目录位于项目的 .in elease 子目录的子目录中。

    与应用程序的文件一起,发布过程将发出包含应用调试信息的程序数据库 (.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>:
      ");
                  String s = Console.ReadLine();
                  ShowWords(s);
                  Console.Write("
      Press 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("
      No words were identified in your input.");
                  }
                  else
                  {
                      Console.WriteLine($"
      There 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. 在“选取发布目标”对话框中,将“选择文件夹”位置更改为 binReleasePublishOutputwin10-x64。 选择“确定”。

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

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

        5. 请再次按照上述步骤创建 osx.10.11-x64 平台的配置文件。 “目标位置”为 binReleasePublishOutputosx.10.11-x64,“目标运行时”为 osx.10.11-x64Visual 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

  • 相关阅读:
    刷题-力扣-414. 第三大的数
    刷题-力扣-976. 三角形的最大周长
    刷题-力扣-942. 增减字符串匹配
    刷题-力扣-409. 最长回文串
    扛把子组20191121-4 Final发布用户使用报告
    Scrum立会报告+燃尽图 07
    Final发布
    扛把子组20191121-3 Final阶段贡献分配规则
    扛把子组20191121-10 Scrum立会报告+燃尽图 06
    Scrum立会报告+燃尽图 05
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/8268400.html
Copyright © 2020-2023  润新知