使用 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# 编写的简单示例可说明此过程。
创建项目。
选择“文件” > “新建” > “项目”。 在“新建项目”对话框中,在“已安装”项目类型窗格中选择“.NET Core”,然后在中心窗格中选择“控制台应用(.NET Core)”模板。 在“名称”文本框中输入项目名称,如“FDD”。 选择“确定”按钮。
添加应用程序的源代码。
在编辑器中打开 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}");
}
}
}
}
}创建应用的调试版本。
选择“生成” > “生成解决方案”。 也可通过选择“调试” > “开始调试”来编译和运行应用程序的调试版本。
部署应用。
调试并测试程序后,创建要与应用一起部署的文件。 若要从 Visual Studio 发布,请执行以下操作:
将工具栏上的解决方案配置从“调试”更改为“发布”,生成应用的发布(而非调试)版本。
在“解决方案资源管理器”中右键单击项目(而非解决方案),然后选择“发布”。
在“发布”选项卡上,选择“发布”。 Visual Studio 将包含应用程序的文件写入本地文件系统。
“发布”选项卡现在显示单个配置文件 FolderProfile。 该配置文件的配置设置显示在选项卡的“摘要”部分。
生成的文件位于名为
PublishOutput
的目录中,该目录位于项目的 .\bin\release 子目录的子目录中。
与应用程序的文件一起,发布过程将发出包含应用调试信息的程序数据库 (.pdb) 文件。 该文件主要用于调试异常。 可以选择不使用应用程序文件打包该文件。 但是,如果要调试应用的发布版本,则应保存该文件。
可以采用任何喜欢的方式部署完整的应用程序文件集。 例如,可以使用简单的 copy
命令将其打包为 Zip 文件,或者使用选择的安装包进行部署。 安装成功后,用户可通过使用 dotnet
命令或提供应用程序文件名(如 dotnet fdd.dll
)来执行应用程序。
除应用程序二进制文件外,安装程序还应捆绑共享框架安装程序,或在安装应用程序的过程中将其作为先决条件进行检查。 安装共享框架需要管理员/根访问权限,因为它属于计算机范围。
包含第三方依赖项的依赖框架的部署
要使用一个或多个第三方依赖项来部署依赖框架的部署,需要任何依赖项都可供项目使用。 在生成应用之前,还需执行以下额外步骤:
使用 NuGet 包管理器向项目添加对 NuGet 包的引用;如果系统上还没有此包,请先安装它。 要打开包管理器,请选择“工具” > “NuGet 包管理器” > “管理解决方案的 NuGet 包”。
确认已在系统中安装
Newtonsoft.Json
,如果尚未安装,请先安装它。 “已安装”选项卡列出了系统中已安装的 NuGet 包。 如果此处未列出Newtonsoft.Json
,请选择“浏览”选项卡,然后在搜索框中输入“Newtonsoft.Json”。 选择Newtonsoft.Json
,在右侧窗格中选择项目,然后选择“安装”。如果系统中已安装
Newtonsoft.Json
,请在“管理解决方案包”选项卡的右侧窗格中选择项目,将该项添加到项目。
请注意,如果依赖框架的部署具有第三方依赖项,则其可移植性只与第三方依赖项相同。 例如,如果某个第三方库只支持 macOS,该应用将无法移植到 Windows 系统。 当第三方依赖项本身取决于本机代码时,也可能发生此情况。 Kestrel 服务器就是一个很好的示例,它需要 libuv 的本机依赖项。 当为具有此类第三方依赖项的应用程序创建 FDD 时,已发布的输出会针对每个本机依赖项支持(存在于 NuGet 包中)的运行时标识符 (RID) 包含一个文件夹。
不包含第三方依赖项的独立部署
部署没有第三方依赖项的独立部署包括创建项目、修改 csproj 文件、生成、测试以及发布应用。 一个用 C# 编写的简单示例可说明此过程。
创建项目。
选择“文件” > “新建” > “项目”。 在“添加新项目”对话框中,在“已安装”项目类型窗格中选择“.NET Core”,然后在中心窗格中选择“控制台应用(.NET Core)”模板。 在“名称”文本框中输入项目名称如“SCD”,然后选择“确定”按钮。
添加应用程序的源代码。
在编辑器中打开 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}");
}
}
}
}
}定义应用的目标平台。
在“解决方案资源管理器”中右键单击项目(而非解决方案),然后选择“编辑 SCD.csproj”。
在 csproj 文件(该文件用于定义应用的目标平台)的
<PropertyGroup>
部分中创建<RuntimeIdentifiers>
标记,然后指定每个目标平台的运行时标识符 (RID)。 请注意,还需要添加分号来分隔 RID。 请查看运行时标识符目录,获取运行时标识符列表。
例如,以下示例表明应用在 64 位 Windows 10 操作系统和 64 位 OS X 10.11 版本的操作系统上运行。
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
请注意,<RuntimeIdentifiers>
元素可能会进入 csproj 文件的任何 <PropertyGroup>
中。 本节后面部分将显示完整的示例 csproj 文件。
创建应用的调试版本。
选择“生成” > “生成解决方案”。 也可通过选择“调试” > “开始调试”来编译和运行应用程序的调试版本。
发布你的应用。
调试并测试程序后,为应用的每个目标平台创建要与应用一起部署的文件。
若要从 Visual Studio 发布应用,请执行以下操作:
将工具栏上的解决方案配置从“调试”更改为“发布”,生成应用的发布(而非调试)版本。
在“解决方案资源管理器”中右键单击项目(而非解决方案),然后选择“发布”。
在“发布”选项卡上,选择“发布”。 Visual Studio 将包含应用程序的文件写入本地文件系统。
“发布”选项卡现在显示单个配置文件 FolderProfile。 该配置文件的配置设置显示在选项卡的“摘要”部分。目标运行时用于标识已发布的运行时,目标位置用于标识独立部署文件的写入位置。
默认情况下,Visual Studio 将所有已发布文件写入单个目录。 为了方便起见,最好为每个目标运行时创建单个配置文件,并将已发布文件置于特定于平台的目录中。 这包括为每个目标平台创建单独的发布配置文件。 现在,请执行下列操作,为每个平台重新生成应用程序:
在“发布”对话框中选择“创建新配置文件”。
在“选取发布目标”对话框中,将“选择文件夹”位置更改为 bin\Release\PublishOutput\win10-x64。 选择“确定”。
在配置文件列表中选择新配置文件 (FolderProfile1) ,并确保“目标运行时”为
win10-x64
。 如果不是,请选择“设置”。 在“配置文件设置”对话框中,将“目标运行时”更改为win10-x64
,然后选择“保存”。 否则,选择“取消”。选择“发布”,发布 64 位 Windows 10 平台的应用。
请再次按照上述步骤创建
osx.10.11-x64
平台的配置文件。 “目标位置”为 bin\Release\PublishOutput\osx.10.11-x64,“目标运行时”为osx.10.11-x64
。Visual Studio 分配给此配置文件的名称是 FolderProfile2。
请注意,每个目标位置中都包含启动应用所需的完整文件集(既包含应用文件,又包含所有 .NET Core 文件)。
与应用程序的文件一起,发布过程将发出包含应用调试信息的程序数据库 (.pdb) 文件。 该文件主要用于调试异常。 可以选择不使用应用程序文件打包该文件。 但是,如果要调试应用的发布版本,则应保存该文件。
可按照任何喜欢的方式部署已发布的文件。 例如,可以使用简单的 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 包的引用;如果系统上还没有此包,请先安装它。 要打开包管理器,请选择“工具” > “NuGet 包管理器” > “管理解决方案的 NuGet 包”。
确认已在系统中安装
Newtonsoft.Json
,如果尚未安装,请先安装它。 “已安装”选项卡列出了系统中已安装的 NuGet 包。 如果此处未列出Newtonsoft.Json
,请选择“浏览”选项卡,然后在搜索框中输入“Newtonsoft.Json”。 选择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
使用 Visual Studio 部署 .NET Core 应用的更多相关文章
- 使用 Visual Studio 部署 .NET Core 应用 ——ASP.NET Core 发布的具体操作
ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...
- 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到Ubuntu 16.04
.Net Core 部署到Ubuntu 16.04 中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务 ...
- 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到SUSE Linux Enterprise Server 12 SP2 64 位(GNOME 版本3.20.2)
SUSE Linux安装 apache 命令:sudo zypper in apache 设置apache 服务可用 命令:sudo systemctl enable apache2.service启 ...
- ASP.NET Core 中文文档 第二章 指南(4.1)ASP.NET Core MVC 与 Visual Studio 入门
原文:Getting started with ASP.NET Core MVC and Visual Studio 作者:Rick Anderson 翻译:娄宇(Lyrics) 校对:刘怡(Alex ...
- 【Asp.Net Core】一、Visual Studio 2015 和 .NET Core 安装
安装 Visual Studio 和 .NET Core 1.安装 Visual Studio Community 2015,选择 Community 下载并执行默认安装.Visual Studio ...
- 用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署常见问题
https://msdn.microsoft.com/zh-cn/library/ee942158(v=vs.110).aspx#can_i_exclude_specific_files_or_fol ...
- 【翻译】使用Visual Studio创建Asp.Net Core MVC (一)
This tutorial will teach you the basics of building an ASP.NET Core MVC web app using Visual Studio ...
- 005.Getting started with ASP.NET Core MVC and Visual Studio -- 【VS开发asp.net core mvc 入门】
Getting started with ASP.NET Core MVC and Visual Studio VS开发asp.net core mvc 入门 2017-3-7 2 分钟阅读时长 本文 ...
- Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序
系列目录 [已更新最新开发文章,点击查看详细] 要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用 ...
随机推荐
- 【BZOJ1941】Hide and Seek(KD-Tree)
[BZOJ1941]Hide and Seek(KD-Tree) 题面 BZOJ 洛谷 题解 \(KD-Tree\)对于每个点搜一下最近点和最远点就好了 #include<iostream> ...
- 牛客网 Wannafly挑战赛27 蓝魔法师
蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...
- Mysql Fabric实现学习笔记
Mysql Fabric用来管理mysql服务,提供扩展性和容易使用的系统,管理mysql分片和高可用部署(当前实现了两个特性:高可用和使用数据分片的横向扩展,能单独使用或结合使用这两个特性.). 架 ...
- Unity3D开发七惑
使用Unity3D开发也有大半年了,心中存惑如下,愿与各位开发者一起探讨: (1) 远离普适编程之惑 随着游戏引擎的不断发展,游戏程序员的开发层级也越来越高,以unity3d尤为突出.如果是进行We ...
- linux 下文件重命名/移动/复制命令(转)
linux 下文件重命名/移动/复制命令(转) linux下重命名文件:使用mv命令就可以了, 例:要把名为:abc 重命名为:123 可以这样操作: 重命名:MV命令 1.进入你的文件目录,运行 ...
- JS常见的算法
原文链接:Jack Pu's Blog 虽说我们很多时候前端很少有机会接触到算法.实际上学习数据结构与算法对于工程师去理解和分析问题都是有帮助的.如果将来当我们面对较为复杂的问题,这些基础知识的积累可 ...
- Git新手上路,让你快速掌握Git的基本使用
github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.这对于一般人来说公共仓库就已经足够了. 1.注册账户以及创建仓库 要想 ...
- IE8动态创建CSS
IE8动态创建CSS 最近在项目中用到在页面中动态创建CSS方法,记录一下方便以后查看 一. 在IE下动态创建(网上收集3种方法,最后一个方法未测试成功,具体不知道什么原因) 第一种(此方法很麻烦,需 ...
- MySQL新建用户,授权
登录MySQL mysql -u root -p 添加新用户 允许本地 IP 访问 localhost, 127.0.0.1 create user 'test'@'localhost' identi ...
- Small Multiple
题目描述 Find the smallest possible sum of the digits in the decimal notation of a positive multiple of ...