.NET Core 应用程序部署。
以下各节演示如何使用 Microsoft Visual Studio 创建下列各类部署:
- 依赖框架的部署
- 包含第三方依赖项的依赖框架的部署
- 独立部署
- 包含第三方依赖项的独立部署
Windows 上 .NET Core 的先决条件。
依赖框架的部署
一个用 C# 编写的简单示例可说明此过程。
-
创建项目。
选择“确定”按钮。
-
添加应用程序的源代码。
它使用正则表达式
\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}"); } } } } } -
创建应用的调试版本。
也可通过选择“调试” > “开始调试”来编译和运行应用程序的调试版本。
-
部署应用。
若要从 Visual Studio 发布,请执行以下操作:
-
将工具栏上的解决方案配置从“调试”更改为“发布”,生成应用的发布(而非调试)版本。
-
在“解决方案资源管理器”中右键单击项目(而非解决方案),然后选择“发布”。
-
Visual Studio 将包含应用程序的文件写入本地文件系统。
-
该配置文件的配置设置显示在选项卡的“摘要”部分。
生成的文件位于名为
PublishOutput的目录中,该目录位于项目的 .\bin\release 子目录的子目录中。 -
但是,如果要调试应用的发布版本,则应保存该文件。
安装成功后,用户可通过使用 dotnet 命令或提供应用程序文件名(如 dotnet fdd.dll)来执行应用程序。
安装共享框架需要管理员/根访问权限,因为它属于计算机范围。
包含第三方依赖项的依赖框架的部署
在生成应用之前,还需执行以下额外步骤:
-
要打开包管理器,请选择“工具” > “NuGet 包管理器” > “管理解决方案的 NuGet 包”。
-
选择
Newtonsoft.Json,在右侧窗格中选择项目,然后选择“安装”。 -
如果系统中已安装
Newtonsoft.Json,请在“管理解决方案包”选项卡的右侧窗格中选择项目,将该项添加到项目。
运行时标识符 (RID) 包含一个文件夹。
不包含第三方依赖项的独立部署
一个用 C# 编写的简单示例可说明此过程。
-
创建项目。
在“名称”文本框中输入项目名称如“SCD”,然后选择“确定”按钮。
-
添加应用程序的源代码。
它使用正则表达式
\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}"); } } } } } -
定义应用的目标平台。
-
在“解决方案资源管理器”中右键单击项目(而非解决方案),然后选择“编辑 SCD.csproj”。
-
运行时标识符目录,获取运行时标识符列表。
例如,以下示例表明应用在 64 位 Windows 10 操作系统和 64 位 OS X 10.11 版本的操作系统上运行。
-
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
本节后面部分将显示完整的示例 csproj 文件。
-
创建应用的调试版本。
也可通过选择“调试” > “开始调试”来编译和运行应用程序的调试版本。
-
发布你的应用。
调试并测试程序后,为应用的每个目标平台创建要与应用一起部署的文件。
若要从 Visual Studio 发布应用,请执行以下操作:
-
将工具栏上的解决方案配置从“调试”更改为“发布”,生成应用的发布(而非调试)版本。
-
在“解决方案资源管理器”中右键单击项目(而非解决方案),然后选择“发布”。
-
Visual Studio 将包含应用程序的文件写入本地文件系统。
-
该配置文件的配置设置显示在选项卡的“摘要”部分。目标运行时用于标识已发布的运行时,目标位置用于标识独立部署文件的写入位置。
-
现在,请执行下列操作,为每个平台重新生成应用程序:
-
在“发布”对话框中选择“创建新配置文件”。
-
选择“确定”。
-
否则,选择“取消”。
-
选择“发布”,发布 64 位 Windows 10 平台的应用。
-
Visual Studio 分配给此配置文件的名称是 FolderProfile2。
-
请注意,每个目标位置中都包含启动应用所需的完整文件集(既包含应用文件,又包含所有 .NET Core 文件)。
-
但是,如果要调试应用的发布版本,则应保存该文件。
例如,可以使用简单的 copy 命令将其打包为 Zip 文件,或者使用选择的安装包进行部署。
下面是此项目完整的 csproj 文件。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
</Project>
包含第三方依赖项的独立部署
在生成应用之前,还需执行以下额外步骤:
-
要打开包管理器,请选择“工具” > “NuGet 包管理器” > “管理解决方案的 NuGet 包”。
-
选择
Newtonsoft.Json,在右侧窗格中选择项目,然后选择“安装”。 -
如果系统中已安装
Newtonsoft.Json,请在“管理解决方案包”选项卡的右侧窗格中选择项目,将其添加到项目。
下面是此项目的完整 csproj 文件:
<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