dotnet publish

Ten artykuł dotyczy: ✔️ zestawu .NET Core 2.1 SDK i jego nowszych wersji

Nazwa

dotnet publish - Publikuje aplikację i jej zależności w folderze w celu wdrożenia w systemie hostingu.

Streszczenie

dotnet publish [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
    [-c|--configuration <CONFIGURATION>]
    [-f|--framework <FRAMEWORK>] [--force] [--interactive]
    [--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
    [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
    [--os <OS>] [-r|--runtime <RUNTIME_IDENTIFIER>]
    [--self-contained [true|false]] [--no-self-contained]
     [-s|--source <SOURCE>] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet publish -h|--help

Opis

dotnet publish Kompiluje aplikację, odczytuje jej zależności określone w pliku projektu i publikuje wynikowy zestaw plików w katalogu. Dane wyjściowe obejmują następujące zasoby:

  • Kod języka pośredniego (IL) w zestawie z rozszerzeniem dll.
  • Plik deps.json, który zawiera wszystkie zależności projektu.
  • Plik .runtimeconfig.json, który określa udostępnione środowisko uruchomieniowe, których oczekuje aplikacja, a także inne opcje konfiguracji środowiska uruchomieniowego (na przykład typ wyrzucania elementów bezużytecznych).
  • Zależności aplikacji, które są kopiowane z pamięci podręcznej NuGet do folderu wyjściowego.

Dane wyjściowe polecenia są gotowe do wdrożenia w systemie hostingu (na przykład na dotnet publish serwerze, komputerze PC, komputerze Mac, laptopie) do wykonania. Jest to jedyny oficjalnie obsługiwany sposób przygotowania aplikacji do wdrożenia. W zależności od typu wdrożenia, które określa projekt, system hostingu może mieć zainstalowane współdzielone środowisko uruchomieniowe .NET. Aby uzyskać więcej informacji, zobacz Publikowanie aplikacji .NET za pomocą interfejsu wiersza polecenia .NET.

Niejawne przywracanie

Nie trzeba uruchamiać programu dotnet restore , ponieważ jest on uruchamiany niejawnie przez wszystkie polecenia, które wymagają wykonania przywracania, takie jak,,,, dotnet new dotnet build dotnet run dotnet test dotnet publish i dotnet pack . Aby wyłączyć Przywracanie niejawne, użyj --no-restore opcji.

dotnet restorePolecenie jest nadal przydatne w niektórych scenariuszach, w których jawne jest przywracanie, takie jak kompilacje ciągłej integracji w Azure DevOps Services lub w systemach kompilacji, które muszą jawnie kontrolować po wystąpieniu przywracania.

Informacje o sposobach zarządzania źródłami danych NuGet znajdują się w dotnet restore dokumentacji.

MSBuild

Polecenie dotnet publish wywołuje MSBuild, który wywołuje element Publish docelowy. Jeśli właściwość IsPublishable jest ustawiona na wartość dla określonego projektu, nie można wywołać obiektu docelowego, a polecenie uruchamia tylko niejawne false Publish dotnet restore w dotnet publish projekcie.

Wszystkie parametry przekazywane do dotnet publish są przekazywane do MSBuild. Parametry i są map MSBuild właściwości i -c -o Configuration PublishDir .

Polecenie akceptuje MSBuild, takie jak ustawianie właściwości dotnet publish -p i -l definiowanie rejestratora. Na przykład można ustawić właściwość MSBuild przy użyciu formatu: -p:<NAME>=<VALUE> .

Właściwości związane z publikowaniem można również ustawić, odwołując się do pliku pubxml (dostępnego od wersji .NET Core 3.1 SDK). Przykład:

dotnet publish -p:PublishProfile=FolderProfile

W poprzednim przykładzie użyto pliku FolderProfile.pubxml, który znajduje się w <project_folder> folderze /Properties/PublishProfiles. Jeśli określisz ścieżkę i rozszerzenie pliku podczas ustawiania właściwości, zostaną PublishProfile one zignorowane. MSBuild domyślnie wyszukuje plik w folderze Properties/PublishProfiles i przyjmuje rozszerzenie pliku pubxml. Aby określić ścieżkę i nazwę pliku, w tym rozszerzenie, ustaw PublishProfileFullPath właściwość zamiast PublishProfile właściwości .

Następujące właściwości MSBuild zmienić dane wyjściowe dotnet publish .

  • PublishReadyToRun

    Kompiluje zestawy aplikacji w formacie ReadyToRun (R2R). R2R to forma kompilacji z wyprzedzeniem (AOT). Aby uzyskać więcej informacji, zobacz ReadyToRun images (Gotowe do użycia obrazy). Dostępne od wersji .NET Core 3.0 SDK.

    Aby wyświetlić ostrzeżenia o brakujących zależnościach, które mogą powodować błędy środowiska uruchomieniowego, PublishReadyToRunShowWarnings=true użyj .

    Zaleca się określenie w PublishReadyToRun profilu publikowania, a nie w wierszu polecenia.

  • PublishSingleFile

    Pakuje aplikację do pliku wykonywalnego z jednym plikiem specyficznym dla platformy. Aby uzyskać więcej informacji na temat publikowania z jednym plikiem, zobacz dokument projektowy pakietu plików. Dostępne od wersji .NET Core 3.0 SDK.

    Zalecamy określenie tej opcji w pliku projektu, a nie w wierszu polecenia.

  • PublishTrimmed

    Przycina nieużywane biblioteki, aby zmniejszyć rozmiar wdrożenia aplikacji podczas publikowania samodzielnego pliku wykonywalnego. Aby uzyskać więcej informacji, zobacz Trim self-contained deployments and executables(Przycinanie samodzielnych wdrożeń i plików wykonywalnych). Dostępne od wersji .NET 6 SDK.

    Zalecamy określenie tej opcji w pliku projektu, a nie w wierszu polecenia.

Więcej informacji można znaleźć w następujących zasobach:

Pobieranie manifestu obciążenia

Po uruchomieniu tego polecenia inicjuje asynchroniczne pobieranie w tle manifestów reklamowych dla obciążeń. Jeśli pobieranie nadal działa po zakończeniu działania tego polecenia, pobieranie zostanie zatrzymane. Aby uzyskać więcej informacji, zobacz Advertising manifests (Manifesty reklamy).

Argumenty

  • PROJECT|SOLUTION

    Projekt lub rozwiązanie do opublikowania.

    • PROJECTto ścieżka i nazwa pliku projektu w języku C#, F# lub Visual Basic albo ścieżka do katalogu zawierającego plik projektu w języku C#, F# Visual Basic pliku projektu. Jeśli katalog nie zostanie określony, zostanie on domyślnie określony jako bieżący katalog.

    • SOLUTION to ścieżka i nazwa pliku rozwiązania (rozszerzenie sln) lub ścieżka do katalogu zawierającego plik rozwiązania. Jeśli katalog nie zostanie określony, zostanie on domyślnie określony jako bieżący katalog. Dostępne od wersji .NET Core 3.0 SDK.

Opcje

  • -a|--arch <ARCHITECTURE>

    Określa architekturę docelową. Jest to skrócona składnia do ustawiania identyfikatora środowiska uruchomieniowego (RID),gdzie podaną wartość jest łączone z domyślny identyfikator RID. Na przykład na maszynie win-x64 określenie wartości ustawia rid na --arch x86 win-x86 . Jeśli używasz tej opcji, nie używaj -r|--runtime tej opcji. Dostępne od wersji zapoznawczej 7 programu .NET 6.

  • -c|--configuration <CONFIGURATION>

    Definiuje konfigurację kompilacji. Wartość domyślna dla większości projektów to , ale można zastąpić ustawienia konfiguracji Debug kompilacji w projekcie.

  • -f|--framework <FRAMEWORK>

    Publikuje aplikację dla określonej struktury docelowej. W pliku projektu należy określić platformę docelową.

  • --force

    Wymusza rozwiązanie wszystkich zależności, nawet jeśli ostatnie przywracanie powiodło się. Określenie tej flagi jest takie samo jak usunięcie pliku project.assets.json.

  • -?|-h|--help

    Drukuje opis sposobu korzystania z polecenia.

  • --interactive

    Umożliwia polecenie zatrzymania i oczekiwania na dane wejściowe użytkownika lub akcję. Na przykład w celu ukończenia uwierzytelniania. Dostępne od wersji .NET Core 3.0 SDK.

  • --manifest <PATH_TO_MANIFEST_FILE>

    Określa jeden lub kilka manifestów docelowych do użycia w celu przycinania zestawu pakietów opublikowanych w aplikacji. Plik manifestu jest częścią danych wyjściowych dotnet store polecenia. Aby określić wiele manifestów, dodaj --manifest opcję dla każdego manifestu.

  • --no-build

    Nie tworzy projektu przed opublikowaniem. Ponadto niejawnie ustawia --no-restore flagę .

  • --no-dependencies

    Ignoruje odwołania projekt-projekt i przywraca tylko projekt główny.

  • --nologo

    Nie wyświetla transparentu startowego ani komunikatu o prawach autorskich. Dostępne od wersji .NET Core 3.0 SDK.

  • --no-restore

    Nie wykonuje niejawnego przywracania podczas uruchamiania polecenia.

  • -o|--output <OUTPUT_DIRECTORY>

    Określa ścieżkę do katalogu wyjściowego.

    Jeśli nie zostanie określony, zostanie on domyślnie określony jako [project_file_folder]/bin/[configuration]/[framework]/publish/ dla plików wykonywalnych zależnych od platformy i międzyplatformowych plików binarnych. Wartość domyślna to [project_file_folder]/bin/[configuration]/[framework]/[runtime]/publish/ dla samodzielnego pliku wykonywalnego.

    Jeśli w projekcie internetowym folder wyjściowy znajduje się w folderze projektu, kolejne polecenia będą powodować dotnet publish zagnieżdżone foldery wyjściowe. Jeśli na przykład folder projektu to myproject, a folder wyjściowy publikowania to myproject/publish, a zostanie uruchomiony dwa razy, drugie uruchomienie umieszcza pliki zawartości, takie jak.configi json, w folderze dotnet publish myproject/publish/publish. Aby uniknąć zagnieżdżania folderów publikowania, określ folder publikowania, który nie znajduje się bezpośrednio pod folderem projektu, lub wyklucz folder publish z projektu. Aby wykluczyć folder publikowania o nazwie publishoutput, dodaj następujący element PropertyGroup do elementu w pliku csproj:

    <DefaultItemExcludes>$(DefaultItemExcludes);publishoutput**</DefaultItemExcludes>
    
    • Zestaw .NET Core 3.x SDK i nowsze

      Jeśli określisz ścieżkę względną podczas publikowania projektu, wygenerowany katalog wyjściowy będzie względny względem bieżącego katalogu roboczego, a nie lokalizacji pliku projektu.

      Jeśli określisz ścieżkę względną podczas publikowania rozwiązania, wszystkie dane wyjściowe dla wszystkich projektów będą trafiać do określonego folderu względem bieżącego katalogu roboczego. Aby opublikować dane wyjściowe, przejdź do oddzielnych folderów dla każdego projektu, określ ścieżkę względną przy użyciu właściwości msbuild PublishDir zamiast --output opcji . Na przykład dotnet publish -p:PublishDir=.\publish program wysyła dane wyjściowe publikowania dla każdego projektu do folderu w publish folderze zawierającym plik projektu.

    • Zestaw SDK platformy .NET Core 2.x

      Jeśli określisz ścieżkę względną podczas publikowania projektu, wygenerowany katalog wyjściowy będzie względny względem lokalizacji pliku projektu, a nie bieżącego katalogu roboczego.

      Jeśli określisz ścieżkę względną podczas publikowania rozwiązania, dane wyjściowe każdego projektu będą trafiać do oddzielnego folderu względem lokalizacji pliku projektu. Jeśli określisz ścieżkę bezwzględną podczas publikowania rozwiązania, wszystkie dane wyjściowe publikowania dla wszystkich projektów trafią do określonego folderu.

  • --os <OS>

    Określa docelowy system operacyjny. Jest to skrócona składnia ustawiania identyfikatora środowiska uruchomieniowego (RID),gdzie podaną wartość jest łączona z domyślnym identyfikatorem RID. Na przykład na maszynie win-x64 określenie wartości ustawia rid na --os linux linux-x64 . Jeśli używasz tej opcji, nie używaj -r|--runtime tej opcji. Dostępne od wersji .NET 6.

  • --self-contained [true|false]

    Publikuje środowisko uruchomieniowe .NET wraz z aplikacją, dzięki czemu nie trzeba instalować środowiska uruchomieniowego na maszynie docelowej. Wartość true domyślna to , jeśli określono identyfikator środowiska uruchomieniowego, a projekt jest projektem wykonywalnym (a nie projektem biblioteki). Aby uzyskać więcej informacji, zobacz Publikowanie aplikacji .NET i Publikowanie aplikacji .NET za pomocą interfejsu wiersza polecenia .NET.

    Jeśli ta opcja jest używana bez określania true wartości lub false , wartością domyślną jest true . W takim przypadku nie umieszczaj argumentu rozwiązania lub projektu bezpośrednio po --self-contained , ponieważ lub jest oczekiwane w tym true false miejscu.

  • --no-self-contained

    Odpowiednik --self-contained false . Dostępne od wersji .NET Core 3.0 SDK.

  • --source <SOURCE>

    URI źródła pakietu NuGet do użycia podczas operacji przywracania.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Publikuje aplikację dla danego środowiska uruchomieniowego. Aby uzyskać listę identyfikatorów środowiska uruchomieniowego (RID), zobacz katalog RID. Aby uzyskać więcej informacji, zobacz Publikowanie aplikacji .NET i Publikowanie aplikacji .NET za pomocą interfejsu wiersza polecenia .NET. Jeśli używasz tej opcji, użyj lub --self-contained --no-self-contained .

  • -v|--verbosity <LEVEL>

    Ustawia poziom szczegółowości polecenia. Dozwolone wartości to q[uiet] , , , i m[inimal] n[ormal] d[etailed] diag[nostic] . Wartość domyślna to minimal. Aby uzyskać więcej informacji, zobacz LoggerVerbosity.

  • --version-suffix <VERSION_SUFFIX>

    Definiuje sufiks wersji w celu zastąpienia gwiazdki ( ) w polu wersji * pliku projektu.

Przykłady

  • Utwórz plik binarny międzyplatformowy zależny od platformy dla projektu w bieżącym katalogu:

    dotnet publish
    

    Począwszy od zestawu .NET Core 3.0 SDK, ten przykład tworzy również plik wykonywalny zależny od platformy dla bieżącej platformy.

  • Utwórz samodzielny plik wykonywalny dla projektu w bieżącym katalogu dla określonego środowiska uruchomieniowego:

    dotnet publish --runtime osx.10.11-x64
    

    Rid musi znajdować się w pliku projektu.

  • Utwórz plik wykonywalny zależny od platformy dla projektu w bieżącym katalogu dla określonej platformy:

    dotnet publish --runtime osx.10.11-x64 --self-contained false
    

    Rid musi znajdować się w pliku projektu. Ten przykład dotyczy zestawu .NET Core 3.0 SDK i jego nowszych wersji.

  • Opublikuj projekt w bieżącym katalogu dla określonego środowiska uruchomieniowego i struktury docelowej:

    dotnet publish --framework netcoreapp3.1 --runtime osx.10.11-x64
    
  • Opublikuj określony plik projektu:

    dotnet publish ~/projects/app1/app1.csproj
    
  • Opublikuj bieżącą aplikację, ale nie przywracaj odwołań typu projekt-projekt (P2P), tylko projektu głównego podczas operacji przywracania:

    dotnet publish --no-dependencies
    

Zobacz też