Развертывание приложений .NET Core с помощью Visual StudioDeploy .NET Core apps with Visual Studio

Приложение .NET Core можно развернуть как развертывание, зависящее от платформы, которое содержит двоичные файлы приложений, но зависит от наличия .NET Core в целевой системе, или как автономное развертывание, которое содержит и приложение, и двоичные файлы .NET Core.You can deploy a .NET Core application either as a framework-dependent deployment, which includes your application binaries but depends on the presence of .NET Core on the target system, or as a self-contained deployment, which includes both your application and .NET Core binaries. Общие сведения о развертывании приложений .NET Core см. в разделе Развертывание приложений .NET Core.For an overview of .NET Core application deployment, see .NET Core Application Deployment.

В разделах ниже содержатся сведения об использовании Microsoft Visual Studio для создания следующих типов развертывания:The following sections show how to use Microsoft Visual Studio to create the following kinds of deployments:

  • развертывание, зависящее от платформы;Framework-dependent deployment
  • развертывание, зависящее от платформы, с зависимостями сторонних разработчиков;Framework-dependent deployment with third-party dependencies
  • автономное развертывание;Self-contained deployment
  • Автономное развертывание с зависимостями сторонних разработчиковSelf-contained deployment with third-party dependencies

Сведения об использовании Visual Studio для разработки приложений .NET Core см. в статье Зависимости и требования для .NET Core.For information on using Visual Studio to develop .NET Core applications, see .NET Core dependencies and requirements.

развертывание, зависящее от платформы;Framework-dependent deployment

Если развертывание, зависящее от платформы, не содержит зависимостей сторонних разработчиков, то необходимо просто выполнить сборку, протестировать и опубликовать приложение.Deploying a framework-dependent deployment with no third-party dependencies simply involves building, testing, and publishing the app. Проиллюстрируем этот процесс на примере простого приложения, написанного на языке C#.A simple example written in C# illustrates the process.

  1. Создание проекта.Create the project.

    Выберите Файл > Создать > Проект.Select File > New > Project. В диалоговом окне Создать проект разверните категории проекта своего языка (C# или Visual Basic) на панели типов проектов Установлено, выберите .NET Core, а затем выберите шаблон Консольное приложение (.NET Core) на центральной панели.In the New Project dialog, expand your language's (C# or Visual Basic) project categories in the Installed project types pane, choose .NET Core, and then select the Console App (.NET Core) template in the center pane. В поле Имя введите имя проекта, например "FDD".Enter a project name, such as "FDD", in the Name text box. Нажмите кнопку OK.Select the OK button.

  2. Добавление исходного кода приложения.Add the application's source code.

    Откройте файл Program.cs или Program.vb в редакторе и замените автоматически созданный код приведенным ниже кодом.Open the Program.cs or Program.vb file in the editor and replace the autogenerated code with the following code. Он выводит запрос на ввод текста и отображает отдельные слова, введенные пользователем.It prompts the user to enter text and displays the individual words entered by the user. Для разделения слов во введенном тексте в нем используется регулярное выражение \w+.It uses the regular expression \w+ to separate the words in the input text.

    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}");
                    }
                }
            }
        }
    }
    
    Imports System.Text.RegularExpressions
    
    Namespace Applications.ConsoleApps
        Public Module ConsoleParser
            Public Sub Main()
                Console.WriteLine("Enter any text, followed by <Enter>:")
                Console.WriteLine()
                Dim s = Console.ReadLine()
                ShowWords(s)
                Console.Write($"{vbCrLf}Press any key to continue... ")
                Console.ReadKey()
            End Sub
    
            Private Sub ShowWords(s As String)
                Dim pattern = "\w+"
                Dim matches = Regex.Matches(s, pattern)
                Console.WriteLine()   
                If matches.Count = 0 Then
                    Console.WriteLine("No words were identified in your input.")
                Else
                    Console.WriteLine($"There are {matches.Count} words in your string:")
                    For ctr = 0 To matches.Count - 1
                        Console.WriteLine($"   #{ctr,2}: '{matches(ctr).Value}' at position {matches(ctr).Index}")
                    Next
                End If
                Console.WriteLine()
            End Sub
        End Module
    End Namespace
    
    
  3. Создание отладочной сборки приложения.Create a Debug build of your app.

    Выберите Сборка > Собрать решение.Select Build > Build Solution. Также можно скомпилировать и выполнить отладочную сборку приложения, выбрав Отладка > Начать отладку.You can also compile and run the Debug build of your application by selecting Debug > Start Debugging.

  4. Разверните приложение.Deploy your app.

    Отладив и протестировав программу, создайте файлы, которые будут развертываться с приложением.After you've debugged and tested the program, create the files to be deployed with your app. Для публикации из Visual Studio выполните следующие действия.To publish from Visual Studio, do the following:

    1. На панели инструментов измените конфигурацию решения с Отладка на Выпуск, чтобы собрать версию выпуска (а не отладочную версию) приложения.Change the solution configuration from Debug to Release on the toolbar to build a Release (rather than a Debug) version of your app.

    2. Щелкните правой кнопкой мыши проект (не решение) в обозревателе решений и выберите Опубликовать.Right-click on the project (not the solution) in Solution Explorer and select Publish.

    3. На вкладке Публикация выберите Опубликовать.In the Publish tab, select Publish. Visual Studio записывает файлы, которые составляют приложение, в локальную файловую систему.Visual Studio writes the files that comprise your application to the local file system.

    4. Теперь на вкладке Публикация отображается один профиль — FolderProfile.The Publish tab now shows a single profile, FolderProfile. Параметры конфигурации профиля отображаются на вкладке в разделе Сводка.The profile's configuration settings are shown in the Summary section of the tab.

    Итоговые файлы помещаются в каталог с именем Publish в Windows и publish в системах Unix, который находится в подкаталоге каталога проекта .\bin\release\netcoreapp2.1.The resulting files are placed in a directory named Publish on Windows and publish on Unix systems that is in a subdirectory of your project's .\bin\release\netcoreapp2.1 subdirectory.

Помимо файлов приложения, процесс публикации создает файл базы данных программы (PDB), который содержит отладочную информацию о приложении.Along with your application's files, the publishing process emits a program database (.pdb) file that contains debugging information about your app. Файл используется в основном для отладки исключений.The file is useful primarily for debugging exceptions. Его можно не упаковывать вместе с файлами приложения.You can choose not to package it with your application's files. Однако его следует сохранить на случай, если потребуется выполнить отладку сборки выпуска приложения.You should, however, save it in the event that you want to debug the Release build of your app.

Любым способом разверните полный набор файлов приложения.Deploy the complete set of application files in any way you like. Например, их можно упаковать в ZIP-файл, использовать простую команду copy или развернуть их с помощью любого установочного пакета на ваш выбор.For example, you can package them in a Zip file, use a simple copy command, or deploy them with any installation package of your choice. После установки пользователи могут выполнять приложение с помощью команды dotnet, указав имя файла приложения, например dotnet fdd.dll.Once installed, users can then execute your application by using the dotnet command and providing the application filename, such as dotnet fdd.dll.

Помимо двоичных файлов приложения, установщик должен либо включать в себя установщик общей платформы, либо проверять наличие платформы в процессе установки приложения.In addition to the application binaries, your installer should also either bundle the shared framework installer or check for it as a prerequisite as part of the application installation. Установка общей платформы требует наличия прав администратор или root, так как она производится на уровне всего компьютера.Installation of the shared framework requires Administrator/root access since it is machine-wide.

Развертывание, зависящее от платформы, с зависимостями сторонних разработчиковFramework-dependent deployment with third-party dependencies

Для зависящего от платформы развертывания с одной или более зависимостями сторонних разработчиков требуется, чтобы зависимости были доступны в проекте.Deploying a framework-dependent deployment with one or more third-party dependencies requires that any dependencies be available to your project. Перед сборкой приложения следует выполнить два дополнительных действия.The following additional steps are required before you can build your app:

  1. С помощью диспетчера пакетов NuGet добавьте ссылку на пакет NuGet в проект, а если пакет еще недоступен в системе, установите его.Use the NuGet Package Manager to add a reference to a NuGet package to your project; and if the package is not already available on your system, install it. Чтобы открыть диспетчер пакетов, последовательно выберите Сервис > Диспетчер пакетов NuGet > Управление пакетами NuGet для решения.To open the package manager, select Tools > NuGet Package Manager > Manage NuGet Packages for Solution.

  2. Убедитесь, что в вашей системе установлены зависимости от сторонних разработчиков (например, Newtonsoft.Json), если это не так, установите их.Confirm that your third-party dependencies (for example, Newtonsoft.Json) are installed on your system and, if they aren't, install them. На вкладке Установленные перечислены пакеты NuGet, установленные в системе.The Installed tab lists NuGet packages installed on your system. Если Newtonsoft.Json отсутствует в списке, откройте вкладку Обзор и введите "Newtonsoft.Json" в поле поиска.If Newtonsoft.Json is not listed there, select the Browse tab and enter "Newtonsoft.Json" in the search box. Выберите Newtonsoft.Json и в области справа выберите проект, прежде чем нажать кнопку Установить.Select Newtonsoft.Json and, in the right pane, select your project before selecting Install.

  3. Если Newtonsoft.Json уже установлен в системе, добавьте его в проект, выбрав проект в правой области на вкладке Управление пакетами для решения.If Newtonsoft.Json is already installed on your system, add it to your project by selecting your project in the right pane of the Manage Packages for Solution tab.

Переносимость зависящего от платформы развертывания с зависимостями сторонних разработчиков напрямую зависит от переносимости этих зависимостей.A framework-dependent deployment with third-party dependencies is only as portable as its third-party dependencies. Например, если библиотека стороннего разработчика поддерживает только Mac OS, приложение нельзя перенести в системы Windows.For example, if a third-party library only supports macOS, the app isn't portable to Windows systems. Это происходит, если зависимость стороннего разработчика сама зависит от машинного кода.This happens if the third-party dependency itself depends on native code. Хорошим примером является сервер Kestrel, требующий собственной зависимости от libuv.A good example of this is Kestrel server, which requires a native dependency on libuv. Когда зависящее от платформы развертывание создается для приложения с таким типом зависимости стороннего разработчика, опубликованные выходные данные содержат папку для каждого идентификатора среды выполнения (RID), поддерживаемого зависимостью (и имеющегося в ее пакете NuGet).When an FDD is created for an application with this kind of third-party dependency, the published output contains a folder for each Runtime Identifier (RID) that the native dependency supports (and that exists in its NuGet package).

Автономное развертывание без зависимостей сторонних разработчиковSelf-contained deployment without third-party dependencies

Выполнение автономного развертывания без зависимостей сторонних разработчиков предполагает создание проекта, изменение файла csproj, сборку, тестирование и публикацию приложения.Deploying a self-contained deployment with no third-party dependencies involves creating the project, modifying the csproj file, building, testing, and publishing the app. Проиллюстрируем этот процесс на примере простого приложения, написанного на языке C#.A simple example written in C# illustrates the process. Вы начнете с создания, программирования и тестирования проекта, как и при развертывании, зависимом от платформы.You begin by creating, coding, and testing your project just as you would a framework-dependent deployment:

  1. Создание проекта.Create the project.

    Выберите Файл > Создать > Проект.Select File > New > Project. В диалоговом окне Создать проект разверните категории проекта своего языка (C# или Visual Basic) на панели типов проектов Установлено, выберите .NET Core, а затем выберите шаблон Консольное приложение (.NET Core) на центральной панели.In the New Project dialog, expand your language's (C# or Visual Basic) project categories in the Installed project types pane, choose .NET Core, and then select the Console App (.NET Core) template in the center pane. В поле Имя введите имя проекта, например "SCD", а затем нажмите кнопку ОК.Enter a project name, such as "SCD", in the Name text box, and select the OK button.

  2. Добавление исходного кода приложения.Add the application's source code.

    Откройте файл Program.cs или Program.vb в редакторе и замените автоматически созданный код приведенным ниже кодом.Open the Program.cs or Program.vb file in your editor, and replace the autogenerated code with the following code. Он выводит запрос на ввод текста и отображает отдельные слова, введенные пользователем.It prompts the user to enter text and displays the individual words entered by the user. Для разделения слов во введенном тексте в нем используется регулярное выражение \w+.It uses the regular expression \w+ to separate the words in the input text.

    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}");
                    }
                }
            }
        }
    }
    
    Imports System.Text.RegularExpressions
    
    Namespace Applications.ConsoleApps
        Public Module ConsoleParser
            Public Sub Main()
                Console.WriteLine("Enter any text, followed by <Enter>:")
                Console.WriteLine()
                Dim s = Console.ReadLine()
                ShowWords(s)
                Console.Write($"{vbCrLf}Press any key to continue... ")
                Console.ReadKey()
            End Sub
    
            Private Sub ShowWords(s As String)
                Dim pattern = "\w+"
                Dim matches = Regex.Matches(s, pattern)
                Console.WriteLine()   
                If matches.Count = 0 Then
                    Console.WriteLine("No words were identified in your input.")
                Else
                    Console.WriteLine($"There are {matches.Count} words in your string:")
                    For ctr = 0 To matches.Count - 1
                        Console.WriteLine($"   #{ctr,2}: '{matches(ctr).Value}' at position {matches(ctr).Index}")
                    Next
                End If
                Console.WriteLine()
            End Sub
        End Module
    End Namespace
    
    
  3. Определите, хотите ли вы использовать инвариантный режим глобализации.Determine whether you want to use globalization invariant mode.

    Особенно в том случае, если приложение предназначено для Linux, вы можете уменьшить размер развертывания, используя преимущества инвариантного режима глобализации.Particularly if your app targets Linux, you can reduce the total size of your deployment by taking advantage of globalization invariant mode. Инвариантный режим глобализации подходит для приложений, которые не имеют глобальных параметров и могут использовать соглашения о форматировании, соглашения о регистре, сравнение строк и порядок сортировки для инвариантного языка и региональных параметров.Globalization invariant mode is useful for applications that are not globally aware and that can use the formatting conventions, casing conventions, and string comparison and sort order of the invariant culture.

    Чтобы включить инвариантный режим, щелкните правой кнопкой мыши проект (не решение) в обозревателе решений и выберите Изменить SCD.csproj или Изменить SCD.vbproj.To enable invariant mode, right-click on your project (not the solution) in Solution Explorer, and select Edit SCD.csproj or Edit SCD.vbproj. Затем добавьте следующие выделенные строки в файл:Then add the following highlighted lines to the file:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
      </PropertyGroup>
      <ItemGroup>
        <RuntimeHostConfigurationOption Include="System.Globalization.Invariant" Value="true" />
      </ItemGroup> 
    </Project>
    
  4. Создание отладочной сборки приложения.Create a Debug build of your application.

    Выберите Сборка > Собрать решение.Select Build > Build Solution. Также можно скомпилировать и выполнить отладочную сборку приложения, выбрав Отладка > Начать отладку.You can also compile and run the Debug build of your application by selecting Debug > Start Debugging. Этот шаг отладки позволяет выявить проблемы в приложении, когда оно выполняется на вашей платформе.This debugging step lets you identify problems with your application when it's running on your host platform. Его все равно придется тестировать на каждой целевой платформе.You still will have to test it on each of your target platforms.

    Если вы включили инвариантный режим глобализации, обязательно проверьте, подходит ли отсутствие данных, зависящих от языка и региональных параметров, для вашего приложения.If you've enabled globalization invariant mode, be particularly sure to test whether the absence of culture-sensitive data is suitable for your application.

Когда вы закончите отладку, вы можете опубликовать автономное развертывание.Once you've finished debugging, you can publish your self-contained deployment:

Создание после отладки и тестирования программы файлов, которые будут развертываться с приложением, для каждой целевой платформы.After you've debugged and tested the program, create the files to be deployed with your app for each platform that it targets.

Для публикации приложения из Visual Studio выполните следующие действия.To publish your app from Visual Studio, do the following:

  1. Определение платформ, для которых будет предназначено приложение.Define the platforms that your app will target.

    1. Щелкните правой кнопкой мыши проект (не решение) в обозревателе решений и выберите Изменить SCD.csproj.Right-click on your project (not the solution) in Solution Explorer and select Edit SCD.csproj.

    2. В разделе <PropertyGroup> файла csproj создайте тег <RuntimeIdentifiers>, определяющий платформы, для которых предназначено приложение, и укажите идентификатор среды выполнения (RID) каждой целевой платформы.Create a <RuntimeIdentifiers> tag in the <PropertyGroup> section of your csproj file that defines the platforms your app targets, and specify the runtime identifier (RID) of each platform that you target. Для разделения идентификаторов RID необходимо добавлять точку с запятой.You also need to add a semicolon to separate the RIDs. Список идентификаторов сред выполнения см. в каталоге идентификаторов сред выполнения.See Runtime IDentifier catalog for a list of runtime identifiers.

    Например, приведенный ниже пример указывает, что приложение выполняется в 64-разрядной операционной системе Windows 10 и в 64-разрядной операционной системе OS X 10.11.For example, the following example indicates that the app runs on 64-bit Windows 10 operating systems and the 64-bit OS X Version 10.11 operating system.

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

    Элемент <RuntimeIdentifiers> можно переносить в другие группы <PropertyGroup> в пределах файла csproj.The <RuntimeIdentifiers> element can go into any <PropertyGroup> that you have in your csproj file. Полный пример файла csproj будет приведен далее в этом разделе.A complete sample csproj file appears later in this section.

  2. Опубликуйте приложение.Publish your app.

    Создание после отладки и тестирования программы файлов, которые будут развертываться с приложением, для каждой целевой платформы.After you've debugged and tested the program, create the files to be deployed with your app for each platform that it targets.

    Для публикации приложения из Visual Studio выполните следующие действия.To publish your app from Visual Studio, do the following:

    1. На панели инструментов измените конфигурацию решения с Отладка на Выпуск, чтобы собрать версию выпуска (а не отладочную версию) приложения.Change the solution configuration from Debug to Release on the toolbar to build a Release (rather than a Debug) version of your app.

    2. Щелкните правой кнопкой мыши проект (не решение) в обозревателе решений и выберите Опубликовать.Right-click on the project (not the solution) in Solution Explorer and select Publish.

    3. На вкладке Публикация выберите Опубликовать.In the Publish tab, select Publish. Visual Studio записывает файлы, которые составляют приложение, в локальную файловую систему.Visual Studio writes the files that comprise your application to the local file system.

    4. Теперь на вкладке Публикация отображается один профиль — FolderProfile.The Publish tab now shows a single profile, FolderProfile. Параметры конфигурации профиля отображаются на вкладке в разделе Сводка. Параметр Целевая среда выполнения определяет, какая среда выполнения была опубликована, а параметр Целевое расположение определяет, куда были записаны файлы автономного развертывания.The profile's configuration settings are shown in the Summary section of the tab. Target Runtime identifies which runtime has been published, and Target Location identifies where the files for the self-contained deployment were written.

    5. По умолчанию Visual Studio записывает все опубликованные файлы в один каталог.Visual Studio by default writes all published files to a single directory. Для удобства рекомендуется создать отдельные профили для каждой целевой среды выполнения и размещать опубликованные файлы в каталоге для определенной платформы.For convenience, it's best to create separate profiles for each target runtime and to place published files in a platform-specific directory. Это предполагает создание отдельного профиля публикации для каждой целевой платформы.This involves creating a separate publishing profile for each target platform. Теперь выполните повторную сборку приложения для каждой платформы следующим образом.So now rebuild the application for each platform by doing the following:

      1. Выберите Создать новый профиль в диалоговом окне Публикация.Select Create new profile in the Publish dialog.

      2. В диалоговом окне Выберите целевой объект публикации измените расположение в поле Выберите папку на bin\Release\PublishOutput\win10-x64.In the Pick a publish target dialog, change the Choose a folder location to bin\Release\PublishOutput\win10-x64. Нажмите кнопку ОК.Select OK.

      3. В списке профилей выберите новый профиль (FolderProfile1) и убедитесь, что параметр Целевая среда выполнения имеет значение win10-x64.Select the new profile (FolderProfile1) in the list of profiles, and make sure that the Target Runtime is win10-x64. В противном случае выберите Параметры.If it isn't, select Settings. В диалоговом окне Параметры профиля измените значение параметра Целевая среда выполнения на win10-x64, а затем нажмите кнопку Сохранить.In the Profile Settings dialog, change the Target Runtime to win10-x64 and select Save. В противном случае нажмите кнопку Отмена.Otherwise, select Cancel.

      4. Выберите Опубликовать, чтобы опубликовать приложение для 64-разрядных платформ Windows 10.Select Publish to publish your app for 64-bit Windows 10 platforms.

      5. Выполните приведенные выше шаги еще раз, чтобы создать профиль для платформы osx.10.11-x64.Follow the previous steps again to create a profile for the osx.10.11-x64 platform. Параметр Целевое расположение имеет значение bin\Release\PublishOutput\osx.10.11-x64, а параметр Целевая среда выполнения — osx.10.11-x64.The Target Location is bin\Release\PublishOutput\osx.10.11-x64, and the Target Runtime is osx.10.11-x64. Visual Studio присваивает этому профилю имя FolderProfile2.The name that Visual Studio assigns to this profile is FolderProfile2.

    Каждое целевое расположение содержит полный набор файлов (как файлов приложения, так и всех файлов .NET Core), необходимых для запуска приложения.Each target location contains the complete set of files (both your app files and all .NET Core files) needed to launch your app.

Помимо файлов приложения, процесс публикации создает файл базы данных программы (PDB), который содержит отладочную информацию о приложении.Along with your application's files, the publishing process emits a program database (.pdb) file that contains debugging information about your app. Файл используется в основном для отладки исключений.The file is useful primarily for debugging exceptions. Его можно не упаковывать вместе с файлами приложения.You can choose not to package it with your application's files. Однако его следует сохранить на случай, если потребуется выполнить отладку сборки выпуска приложения.You should, however, save it in the event that you want to debug the Release build of your app.

Разверните опубликованные файлы любым способом.Deploy the published files in any way you like. Например, их можно упаковать в ZIP-файл, использовать простую команду copy или развернуть их с помощью любого установочного пакета на ваш выбор.For example, you can package them in a Zip file, use a simple copy command, or deploy them with any installation package of your choice.

Ниже приведено полное содержимое файла csproj для этого проекта.The following is the complete csproj file for this project.

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

Автономное развертывание с зависимостями сторонних разработчиковSelf-contained deployment with third-party dependencies

Выполнение автономного развертывания с одной или несколькими зависимостями сторонних разработчиков предполагает добавление этих зависимостей.Deploying a self-contained deployment with one or more third-party dependencies involves adding the dependencies. Перед сборкой приложения следует выполнить два дополнительных действия.The following additional steps are required before you can build your app:

  1. С помощью диспетчера пакетов NuGet добавьте ссылку на пакет NuGet в проект, а если пакет еще недоступен в системе, установите его.Use the NuGet Package Manager to add a reference to a NuGet package to your project; and if the package is not already available on your system, install it. Чтобы открыть диспетчер пакетов, последовательно выберите Сервис > Диспетчер пакетов NuGet > Управление пакетами NuGet для решения.To open the package manager, select Tools > NuGet Package Manager > Manage NuGet Packages for Solution.

  2. Убедитесь, что в вашей системе установлены зависимости от сторонних разработчиков (например, Newtonsoft.Json), если это не так, установите их.Confirm that your third-party dependencies (for example, Newtonsoft.Json) are installed on your system and, if they aren't, install them. На вкладке Установленные перечислены пакеты NuGet, установленные в системе.The Installed tab lists NuGet packages installed on your system. Если Newtonsoft.Json отсутствует в списке, откройте вкладку Обзор и введите "Newtonsoft.Json" в поле поиска.If Newtonsoft.Json is not listed there, select the Browse tab and enter "Newtonsoft.Json" in the search box. Выберите Newtonsoft.Json и в области справа выберите проект, прежде чем нажать кнопку Установить.Select Newtonsoft.Json and, in the right pane, select your project before selecting Install.

  3. Если Newtonsoft.Json уже установлен в системе, добавьте его в проект, выбрав проект в правой области на вкладке Управление пакетами для решения.If Newtonsoft.Json is already installed on your system, add it to your project by selecting your project in the right pane of the Manage Packages for Solution tab.

Ниже приведено полное содержимое файла csproj для этого проекта:The following is the complete csproj file for this project:

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

При развертывании приложения все зависимости сторонних разработчиков, используемые в нем, также содержатся в файлах приложения.When you deploy your application, any third-party dependencies used in your app are also contained with your application files. Библиотеки сторонних разработчиков не требуются в системе, в которой выполняется приложение.Third-party libraries aren't required on the system on which the app is running.

Автономное развертывание с библиотекой стороннего разработчика возможно только на платформах, которые поддерживаются этой библиотекой.You can only deploy a self-contained deployment with a third-party library to platforms supported by that library. Это похоже на наличие сторонних зависимостей с собственными зависимостями в развертывании, зависящем от платформы, где собственные зависимости существуют в целевой платформе, только если они были установлены в ней ранее.This is similar to having third-party dependencies with native dependencies in your framework-dependent deployment, where the native dependencies won't exist on the target platform unless they were previously installed there.

См. такжеSee also