Nasazení aplikací .NET Core pomocí sady Visual Studio

Aplikaci .NET Core můžete nasadit buď jako nasazení závislé na rozhraní, které zahrnuje binární soubory vaší aplikace, ale závisí na přítomnosti .NET Core na cílovém systému, nebo jako samostatné nasazení, které zahrnuje jak vaši aplikaci, tak binární soubory .NET Core. Přehled nasazení aplikace .NET Core najdete v tématu Nasazení aplikace .NET Core.

Následující části ukazují, jak pomocí sady Microsoft Visual Studio vytvořit následující druhy nasazení:

  • Nasazení závislé na rozhraní
  • Nasazení závislé na rozhraní s závislostmi třetích stran
  • Samostatné nasazení
  • Samostatné nasazení se závislostmi třetích stran

Informace o používání sady Visual Studio k vývoji aplikací .NET Core najdete v tématu Závislosti a požadavky .NET Core.

Nasazení závislé na rozhraní

Nasazení nasazení závislého na architektuře bez závislostí třetích stran jednoduše zahrnuje sestavování, testování a publikování aplikace. Tento proces znázorňuje jednoduchý příklad napsaný v jazyce C#.

  1. Vytvořte projekt.

    Vyberte Soubor>Nový>Projekt. V dialogovém okně Nový projekt rozbalte kategorie projektů jazyka (C# nebo Visual Basic) v podokně Nainstalované typy projektů, zvolte .NET Core a pak vyberte šablonu konzolové aplikace (.NET Core) v prostředním podokně. Do textového pole Název zadejte název projektu, například "FDD". Vyberte tlačítko OK.

  2. Přidejte zdrojový kód aplikace.

    Otevřete soubor Program.cs nebo Program.vb v editoru a nahraďte automaticky vygenerovaný kód následujícím kódem. Zobrazí uživateli výzvu k zadání textu a zobrazí jednotlivá slova zadaná uživatelem. Používá regulární výraz \w+ k oddělení slov ve vstupním textu.

    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 ?? "You didn't enter anything.");
                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. Vytvořte sestavení ladění aplikace.

    Vyberte Sestavit>řešení. Sestavení ladění aplikace můžete také zkompilovat a spustit výběrem možnosti >Ladění spustit ladění.

  4. Nasaďte aplikaci.

    Po ladění a otestování programu vytvořte soubory, které se mají nasadit s vaší aplikací. Pokud chcete publikovat ze sady Visual Studio, postupujte takto:

    1. Změňte konfiguraci řešení z ladění na vydání na panelu nástrojů tak, aby se sestavila verze (nikoli ladicí) verze vaší aplikace.

    2. V Průzkumník řešení klikněte pravým tlačítkem na projekt (ne na řešení) a vyberte Publikovat.

    3. Na kartě Publikovat vyberte Publikovat. Visual Studio zapíše soubory, které tvoří vaši aplikaci do místního systému souborů.

    4. Na kartě Publikovat se teď zobrazuje jeden profil FolderProfile. Nastavení konfigurace profilu se zobrazuje v části Souhrn na kartě.

    Výsledné soubory jsou umístěny v adresáři pojmenovaném Publish ve Windows a publish v systémech Unix, které jsou v podadresáři podadresáře .\bin\release\netcoreapp2.1 .

Spolu se soubory vaší aplikace generuje proces publikování soubor databáze programu (.pdb), který obsahuje informace o ladění aplikace. Soubor je užitečný hlavně pro ladění výjimek. Můžete se rozhodnout, že ho nezabalíte do souborů vaší aplikace. Měli byste ho ale uložit v případě, že chcete ladit sestavení vydané verze aplikace.

Nasaďte kompletní sadu souborů aplikace libovolným způsobem. Můžete je například zabalit do souboru ZIP, použít jednoduchý copy příkaz nebo je nasadit s libovolným instalačním balíčkem. Po instalaci mohou uživatelé aplikaci spustit pomocí dotnet příkazu a zadat název souboru aplikace, například dotnet fdd.dll.

Kromě binárních souborů aplikací by měl instalační program také sbalit instalační program sdílené architektury nebo ho zkontrolovat jako předpoklad v rámci instalace aplikace. Instalace sdílené architektury vyžaduje Správa istrator/kořenový přístup, protože je širokoúhlý.

Nasazení závislé na rozhraní s závislostmi třetích stran

Nasazení závislého na rozhraní s jednou nebo více závislostmi třetích stran vyžaduje, aby všechny závislosti byly pro váš projekt dostupné. Před sestavením aplikace jsou potřeba následující další kroky:

  1. Pomocí Správce balíčků NuGet přidejte do projektu odkaz na balíček NuGet. Pokud balíček ještě není v systému dostupný, nainstalujte ho. Pokud chcete otevřít správce balíčků, vyberte Nástroje>NuGet Správce balíčků> Nabídky NuGet pro řešení.

  2. Ověřte, že jsou v systému nainstalované závislosti třetích stran (například Newtonsoft.Json) a pokud ne, nainstalujte je. Na kartě Nainstalované jsou uvedeny balíčky NuGet nainstalované ve vašem systému. Pokud Newtonsoft.Json tam není uvedený, vyberte kartu Procházet a do vyhledávacího pole zadejte "Newtonsoft.Json". Vyberte Newtonsoft.Json projekt a v pravém podokně vyberte projekt před výběrem možnosti Nainstalovat.

  3. Pokud Newtonsoft.Json už je v systému nainstalovaný, přidejte ho do projektu výběrem projektu v pravém podokně na kartě Spravovat balíčky pro řešení .

Nasazení závislé na rozhraní se závislostmi třetích stran je stejně přenosné jako jeho závislosti třetích stran. Pokud například knihovna třetí strany podporuje jenom macOS, aplikace není přenosná do systémů Windows. K tomu dochází, pokud samotná závislost třetí strany závisí na nativním kódu. Dobrým příkladem je server Kestrel, který vyžaduje nativní závislost na libuv. Při vytvoření FDD pro aplikaci s tímto druhem závislosti třetí strany obsahuje publikovaný výstup složku pro každý identifikátor modulu runtime (RID), který nativní závislost podporuje (a která existuje v balíčku NuGet).

Samostatné nasazení bez závislostí třetích stran

Nasazení samostatného nasazení bez závislostí třetích stran zahrnuje vytvoření projektu, úpravu souboru csproj , sestavení, testování a publikování aplikace. Tento proces znázorňuje jednoduchý příklad napsaný v jazyce C#. Začnete vytvořením, kódováním a testováním projektu stejně jako při nasazení závislém na rozhraní:

  1. Vytvořte projekt.

    Vyberte Soubor>Nový>Projekt. V dialogovém okně Nový projekt rozbalte kategorie projektů jazyka (C# nebo Visual Basic) v podokně Nainstalované typy projektů, zvolte .NET Core a pak vyberte šablonu konzolové aplikace (.NET Core) v prostředním podokně. Do textového pole Název zadejte název projektu, například SCD, a vyberte tlačítko OK .

  2. Přidejte zdrojový kód aplikace.

    Otevřete soubor Program.cs nebo Program.vb v editoru a nahraďte automaticky vygenerovaný kód následujícím kódem. Zobrazí uživateli výzvu k zadání textu a zobrazí jednotlivá slova zadaná uživatelem. Používá regulární výraz \w+ k oddělení slov ve vstupním textu.

    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 ?? "You didn't enter anything.");
                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. Určete, jestli chcete použít invariantní režim globalizace.

    Zejména pokud vaše aplikace cílí na Linux, můžete snížit celkovou velikost nasazení tím, že využijete invariantní režim globalizace. Invariantní režim globalizace je užitečný pro aplikace, které nejsou globálně vědomi a které můžou používat konvence formátování, konvence psaní písmen a porovnání řetězců a pořadí řazení invariantní jazykové verze.

    Pokud chcete povolit invariantní režim, klikněte pravým tlačítkem na projekt (ne na řešení) v Průzkumník řešení a vyberte Upravit SCD.csproj nebo Upravit SCD.vbproj. Pak do souboru přidejte následující zvýrazněné řádky:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <Nullable>enable</Nullable>
      </PropertyGroup>
    
      <ItemGroup>
        <RuntimeHostConfigurationOption Include="System.Globalization.Invariant" Value="true" />
      </ItemGroup> 
    
    </Project>
    
  4. Vytvořte sestavení ladění vaší aplikace.

    Vyberte Sestavit>řešení. Sestavení ladění aplikace můžete také zkompilovat a spustit výběrem možnosti >Ladění spustit ladění. Tento krok ladění umožňuje identifikovat problémy s vaší aplikací, když běží na hostitelské platformě. Budete ho muset otestovat na všech cílových platformách.

    Pokud jste povolili invariantní režim globalizace, nezapomeňte zejména otestovat, jestli pro vaši aplikaci chybí data citlivá na jazykovou verzi.

Po dokončení ladění můžete publikovat samostatné nasazení:

Po ladění a otestování programu vytvořte soubory, které se mají nasadit s aplikací pro každou platformu, na kterou cílí.

Aplikaci publikujete ze sady Visual Studio takto:

  1. Definujte platformy, na které bude vaše aplikace cílit.

    1. V Průzkumník řešení klikněte pravým tlačítkem na projekt (ne na řešení) a vyberte Upravit SCD.csproj.

    2. V části souboru csproj vytvořte <RuntimeIdentifiers> značku<PropertyGroup>, která definuje platformy, na které vaše aplikace cílí, a zadejte identifikátor modulu runtime (RID) každé cílové platformy. Musíte také přidat středník k oddělení identifikátorů RID. Seznam identifikátorů modulu runtime najdete v katalogu identifikátorů modulu runtime.

    Následující příklad například označuje, že aplikace běží na 64bitových operačních systémech Windows a na 64bitovém operačním systému OS X.

    <PropertyGroup>
       <RuntimeIdentifiers>win-x64;osx-x64</RuntimeIdentifiers>
    </PropertyGroup>
    

    Prvek <RuntimeIdentifiers> může jít do libovolného <PropertyGroup> souboru csproj . Kompletní ukázkový soubor csproj se zobrazí dále v této části.

  2. Publikujte aplikaci.

    Po ladění a otestování programu vytvořte soubory, které se mají nasadit s aplikací pro každou platformu, na kterou cílí.

    Aplikaci publikujete ze sady Visual Studio takto:

    1. Změňte konfiguraci řešení z ladění na vydání na panelu nástrojů tak, aby se sestavila verze (nikoli ladicí) verze vaší aplikace.

    2. V Průzkumník řešení klikněte pravým tlačítkem na projekt (ne na řešení) a vyberte Publikovat.

    3. Na kartě Publikovat vyberte Publikovat. Visual Studio zapíše soubory, které tvoří vaši aplikaci do místního systému souborů.

    4. Na kartě Publikovat se teď zobrazuje jeden profil FolderProfile. Nastavení konfigurace profilu se zobrazuje v části Souhrn na kartě. Cílový modul runtime identifikuje, který modul runtime byl publikován, a cílové umístění určuje, kde byly zapsány soubory pro samostatné nasazení.

    5. Visual Studio ve výchozím nastavení zapíše všechny publikované soubory do jednoho adresáře. Pro usnadnění je nejlepší vytvořit samostatné profily pro každý cílový modul runtime a umístit publikované soubory do adresáře specifického pro platformu. To zahrnuje vytvoření samostatného profilu publikování pro každou cílovou platformu. Teď tedy znovu sestavte aplikaci pro každou platformu následujícím způsobem:

      1. V dialogovém okně Publikovat vyberte Vytvořit nový profil.

      2. V dialogovém okně Vybrat cíl publikování změňte umístění složky na bin\Release\PublishOutput\win-x64. Vyberte OK.

      3. V seznamu profilů vyberte nový profil (FolderProfile1) a ujistěte se, že cílový modul runtime je win-x64. Pokud není, vyberte Nastavení. V dialogovém okně Profil Nastavení změňte cílový modul runtime na win-x64 a vyberte Uložit. V opačném případě vyberte Zrušit.

      4. Vyberte Publikovat a publikujte aplikaci pro 64bitové platformy Windows 10.

      5. Znovu postupujte podle předchozích kroků a vytvořte profil pro platformu osx-x64 . Cílové umístění je bin\Release\PublishOutput\osx-x64 a cílový modul runtime je osx-x64. Název, který Visual Studio přiřadí k tomuto profilu, je FolderProfile2.

    Každé cílové umístění obsahuje úplnou sadu souborů (soubory aplikace i všechny soubory .NET Core) potřebné ke spuštění aplikace.

Spolu se soubory vaší aplikace generuje proces publikování soubor databáze programu (.pdb), který obsahuje informace o ladění aplikace. Soubor je užitečný hlavně pro ladění výjimek. Můžete se rozhodnout, že ho nezabalíte do souborů vaší aplikace. Měli byste ho ale uložit v případě, že chcete ladit sestavení vydané verze aplikace.

Publikované soubory nasaďte libovolným způsobem. Můžete je například zabalit do souboru ZIP, použít jednoduchý copy příkaz nebo je nasadit s libovolným instalačním balíčkem.

Následuje úplný soubor csproj pro tento projekt.

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

Samostatné nasazení se závislostmi třetích stran

Nasazení samostatného nasazení s jednou nebo více závislostmi třetích stran zahrnuje přidání závislostí. Před sestavením aplikace jsou potřeba následující další kroky:

  1. Pomocí Správce balíčků NuGet přidejte do projektu odkaz na balíček NuGet. Pokud balíček ještě není v systému dostupný, nainstalujte ho. Pokud chcete otevřít správce balíčků, vyberte Nástroje>NuGet Správce balíčků> Nabídky NuGet pro řešení.

  2. Ověřte, že jsou v systému nainstalované závislosti třetích stran (například Newtonsoft.Json) a pokud ne, nainstalujte je. Na kartě Nainstalované jsou uvedeny balíčky NuGet nainstalované ve vašem systému. Pokud Newtonsoft.Json tam není uvedený, vyberte kartu Procházet a do vyhledávacího pole zadejte "Newtonsoft.Json". Vyberte Newtonsoft.Json projekt a v pravém podokně vyberte projekt před výběrem možnosti Nainstalovat.

  3. Pokud Newtonsoft.Json už je v systému nainstalovaný, přidejte ho do projektu výběrem projektu v pravém podokně na kartě Spravovat balíčky pro řešení .

Následuje úplný soubor csproj pro tento projekt:

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

Když nasadíte aplikaci, všechny závislosti třetích stran použité ve vaší aplikaci budou také obsaženy v souborech vaší aplikace. Knihovny třetích stran se v systému, na kterém je aplikace spuštěná, nevyžadují.

Do platforem podporovaných danou knihovnou můžete nasadit pouze samostatné nasazení s knihovnou třetí strany. Podobá se tomu, že v nasazení závislém na rozhraní existují závislosti třetích stran s nativními závislostmi, kdy nativní závislosti nebudou na cílové platformě existovat, pokud tam nebyly dříve nainstalovány.

Viz také