Freigeben über


Erstellen von .NET ClickOnce-Anwendungen über die Befehlszeile

In Visual Studio können Sie Projekte über die Befehlszeile erstellen, auch wenn sie in der integrierten Entwicklungsumgebung (IDE) erstellt werden. Tatsächlich können Sie ein Projekt neu erstellen, das mit Visual Studio auf einem anderen Computer erstellt wurde, auf dem nur .NET 5 oder höher installiert ist. Mit dieser Funktion können Sie einen Build mithilfe eines automatisierten Prozesses reproduzieren, z. B. in einem zentralen Buildlabor oder mit erweiterten Skripttechniken, die über den Umfang des Projekts selbst hinausgehen.

Hinweis

Informationen zum Erstellen von .NET Framework ClickOnce-Anwendungen über die Befehlszeile finden Sie unter Erstellen von ClickOnce-Anwendungen über die Befehlszeile.

Verwenden von MSBuild zum Reproduzieren von .NET ClickOnce-Anwendungsbereitstellungen

Wenn Sie an der Befehlszeile aufrufen msbuild /target:publish , weist dieser Befehl das MSBuild-System an, das Projekt zu erstellen und eine ClickOnce-Anwendung im Veröffentlichungsordner zu erstellen. Dieser Befehl entspricht dem Auswählen des Befehls "Veröffentlichen" in der IDE.

Dieser Befehl führt msbuild.exeaus, der sich auf dem Pfad in der Visual Studio-Eingabeaufforderungsumgebung befindet.

Ein "Ziel" ist ein Indikator für MSBuild zum Verarbeiten des Befehls. Die wichtigsten Ziele sind das "Build"-Ziel und das "publish"-Ziel. Das Buildziel entspricht der Auswahl des Befehls "Build" (oder Drücken von F5) in der IDE. Wenn Sie ihr Projekt nur erstellen möchten, können Sie dies eingeben msbuild. Dieser Befehl funktioniert, da das Buildziel das Standardziel für alle Projekte ist, die von Visual Studio generiert werden. Daher müssen Sie das Build-Ziel nicht explizit angeben. Die Eingabe msbuild ist daher derselbe Vorgang wie die Eingabe msbuild /target:build.

Der /target:publish Befehl weist MSBuild an, das Veröffentlichungsziel aufzurufen. Das Veröffentlichungsziel hängt vom Buildziel ab, was bedeutet, dass der Veröffentlichungsvorgang ein übergeordneter Prozess des Buildvorgangs ist. Wenn Sie beispielsweise eine Änderung an Visual Basic- oder C#-Quelldateien vorgenommen haben, erstellt der Veröffentlichungsvorgang automatisch die entsprechende Assembly neu.

Informationen zum Generieren einer vollständigen ClickOnce-Bereitstellung mithilfe des Befehlszeilentools Mage.exe zum Erstellen Ihres ClickOnce-Manifests finden Sie unter Walkthrough: Manually deploy a ClickOnce application.

Erstellen und Entwickeln einer einfachen ClickOnce-Anwendung mit MSBuild

Die einfachste Möglichkeit zum Erstellen eines Veröffentlichungsprofils ist die Verwendung von Visual Studio. Zum Veröffentlichen mit MSBuild ist ein Veröffentlichungsprofil erforderlich.

Erstellen und Veröffentlichen eines ClickOnce-Projekts

  1. Öffnen Sie Visual Studio, und erstellen Sie ein neues Projekt.

    Wählen Sie die Projektvorlage "Windows Forms-App " oder "WPF-Anwendung " aus, und nennen Sie das Projekt CmdLineDemo, und erstellen Sie dann das Projekt.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie "Veröffentlichen" aus.

    Dieser Schritt stellt sicher, dass das Projekt ordnungsgemäß für die Erstellung einer ClickOnce-Anwendungsbereitstellung konfiguriert ist.

    Die Seite "Veröffentlichen" wird angezeigt.

  3. Wählen Sie auf der Seite "Veröffentlichen" die Option " Veröffentlichungsprofil hinzufügen", dann "ClickOnce" und dann " Fertig stellen" aus.

    In dieser Übung können Sie die anderen Konfigurationseinstellungen auf der Seite "Veröffentlichen" ignorieren.

  4. Wählen Sie nach Abschluss des Vorgangs " Schließen " aus, um das Dialogfeld "Seite veröffentlichen" zu beenden.

  5. Wählen Sie Veröffentlichen aus.

    Visual Studio generiert die ClickOnce-Bereitstellungsausgabe.

  6. Speichern Sie Ihr Projekt, und notieren Sie sich den Ordnerspeicherort, in dem es gespeichert ist.

    In den vorherigen Schritten wird ein ClickOnce-Projekt erstellt, das zum ersten Mal veröffentlicht wurde. Jetzt können Sie den Build außerhalb der IDE reproduzieren.

Den Build über die Kommandozeile reproduzieren

  1. Beenden Sie Visual Studio.

  2. Wählen Sie im Windows-StartmenüTools>Befehlszeilen>Entwickler-Eingabeaufforderung aus.

    Die Visual Studio Developer Command Prompt wird geöffnet.

  3. Stellen Sie in der Visual Studio-Eingabeaufforderung sicher, dass das aktuelle Verzeichnis den Speicherort des zuvor erstellten Projekts anzeigt.

    Wenn Sie nicht im Projektverzeichnis arbeiten, geben Sie einen Befehl ein, um zum gewünschten Speicherort zu wechseln, z. B. chdir C:\Users\username\source\repos\CmdLineDemo.

  4. Um die im vorherigen Abschnitt erstellten vorhandenen Dateien zu entfernen, geben Sie die Zeichenfolge rmdir /s publishein.

    Dieser Schritt ist optional, stellt aber sicher, dass der Befehlszeilenbuild alle neuen Dateien erzeugt.

    Für .NET 5 und höher ist das Erstellen von .NET ClickOnce-Anwendungen über die Befehlszeile eine ähnliche Erfahrung. Der einzige Unterschied besteht darin, dass Sie eine zusätzliche Eigenschaft für das Veröffentlichungsprofil in der Befehlszeile MSBuild bereitstellen müssen.

  5. Geben Sie msbuild /target:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>" ein.

    Die vorstehenden Schritte erzeugen eine vollständige ClickOnce-Anwendungsbereitstellung in einem Unterordner Ihres Projekts mit dem Namen "Veröffentlichen". CmdLineDemo.application ist das ClickOnce-Bereitstellungsmanifest. Der Ordner CmdLineDemo_1.0.0.0.0 enthält die Dateien CmdLineDemo.exe und CmdLineDemo.exe.manifest, das ClickOnce-Anwendungsmanifest. Setup.exe ist der Bootstrapper, der standardmäßig für die Installation von .NET konfiguriert ist. Die Dateien in diesem Ordner umfassen den gesamten Satz von Dateien, die Sie für die Bereitstellung Ihrer Anwendung über das Web oder über UNC oder CD/DVD benötigen.

Hinweis

Das MSBuild-System verwendet die PublishDir-Option, um den Speicherort für die Ausgabe, wie z. B. msbuild /t:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>", anzugeben.

Veröffentlichung der Prozessaussgabe

MSBuild verwendet die PublishDir-Eigenschaft, um den Speicherort für die Build-Ausgabe festzulegen, einschließlich der Artefakte, die beim Build erstellt werden. Der PublishDir Wert, den MSBuild als Ziel für die Veröffentlichung verwendet, wird standardmäßig aus der PublishDir Eigenschaft in der PUBXML-Datei (.NET) abgerufen. Sie können dieses Verhalten auch über die Befehlszeile "MSBuild" überschreiben, indem Sie die /p Option verwenden. Wenn Sie die Einstellung außer Kraft setzen, wird die Veröffentlichung an den angegebenen Speicherort gesendet. Die Ausgabe wird während des MSBuild-Schritts beim Veröffentlichen generiert. Jedes MSBuild-Ziel mit AfterTargets="ClickOncePublish" Ausführung, nachdem diese Kopie erstellt wurde.

Die PublishUrl Eigenschaft wird im Gegensatz zum PublishDirMSBuild-Schritt nicht verwendet. PublishUrl wird ignoriert, wenn Sie MSBuild direkt aufrufen, um über die Befehlszeile zu veröffentlichen.

Wenn die Veröffentlichung in Visual Studio IDE gestartet wird, ruft Visual Studio MSBuild auf, um Artefakte an dem PublishDir Speicherort zu veröffentlichen. Nach Abschluss dieses MSBuild-Schritts veröffentlicht Visual Studio dann ClickOnce-spezifische Dateien an den Speicherort, auf den PublishUrl verwiesen wird. Dieser zweite Schritt wird innerhalb des Visual Studio-Prozesses ausgeführt. Sie können während dieses Schritts keine Ziel-/Aufgabe einfügen, die ausgeführt werden soll, da es sich um einen Visual Studio-Prozess handelt.

Kopieren Sie für MSBuild-Bereitstellungen, die Visual Studio nicht verwenden, alle Dateien im Bereitstellungsverzeichnis in das Bereitstellungsziel oder das Bereitstellungsmedium. Das Bereitstellungsverzeichnis kann entweder ein Ordner auf einer Website oder ftp-Website, eine Dateifreigabe oder eine CD-ROM sein. Sie können z. B. ein Drittanbietertool oder eine benutzerdefinierte MSBuild-Aufgabe verwenden, um die ClickOnce-Dateien zu kopieren.

Für jede Nachbearbeitung im PublishUrl Ordner müssen Sie über ein separates Skript verfügen.

Von Bedeutung

Wenn PublishDir auf denselben Speicherort wie PublishUrl festgelegt ist, wird die duplizierte Kompilierungsausgabe an den Speicherort PublishUrl kopiert. Sie können dieses Problem in Visual Studio 2022, Version 17.4 und höher, vermeiden, indem Sie ein neues Profil erstellen. Das neue Profil legt einen anderen Speicherort als PublishDir fest, im Gegensatz zu PublishUrl. Am Ende des Veröffentlichungsvorgangs werden die relevanten ClickOnce-Dateien vom Speicherort PublishDir an den Speicherort PublishUrl kopiert.

Veröffentlichen von Eigenschaften

Wenn Sie die Anwendung mithilfe der vorherigen Verfahren veröffentlichen, werden die folgenden Eigenschaften in die Veröffentlichungsprofildatei für .NET-Projekte (.NET 5 und höher) eingefügt. Diese Eigenschaften beeinflussen direkt die Erstellung der ClickOnce-Anwendung.

In .pubxml:

<AssemblyOriginatorKeyFile>WindowsApplication3.snk</AssemblyOriginatorKeyFile>
<GenerateManifests>true</GenerateManifests>
<TargetZone>LocalIntranet</TargetZone>
<PublisherName>Microsoft</PublisherName>
<ProductName>CmdLineDemo</ProductName>
<PublishUrl>http://localhost/CmdLineDemo</PublishUrl>
<Install>true</Install>
<ApplicationVersion>1.0.0.*</ApplicationVersion>
<ApplicationRevision>1</ApplicationRevision>
<UpdateEnabled>true</UpdateEnabled>
<UpdateRequired>false</UpdateRequired>
<UpdateMode>Foreground</UpdateMode>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>

Sie können diese Eigenschaften in der Befehlszeile außer Kraft setzen, ohne die Projektdatei selbst zu ändern. Der folgende Code erstellt beispielsweise die ClickOnce-Anwendungsbereitstellung ohne bootstrapper:

msbuild /target:publish /p:PublishProfile=<pubxml file> /property:BootstrapperEnabled=false

Veröffentlichungseigenschaften werden in Visual Studio von den Eigenschaftenseiten "Veröffentlichen", "Sicherheit" und " Signieren " des Project-Designers gesteuert. Für .NET-Projekte (.NET 5 und höher) werden diese Einstellungen in der pubxml-Datei bereitgestellt, auf die Sie mit dem Veröffentlichungstool in Visual Studio zugreifen können.

Die folgenden Veröffentlichungseigenschaften werden auf verschiedenen Eigenschaftenseiten des Anwendungs-Designers festgelegt.

  • AssemblyOriginatorKeyFile bestimmt die Schlüsseldatei, die zum Signieren Ihrer ClickOnce-Anwendungsmanifeste verwendet wird. Dieser Schlüssel kann auch verwendet werden, um Ihren Assemblys einen starken Namen zuzuweisen. Diese Eigenschaft wird auf der Signaturseite des Project-Designers festgelegt. Bei .NET-Windows-Anwendungen verbleibt diese Einstellung in der Projektdatei.

Die folgenden Eigenschaften werden auf der Seite " Veröffentlichen " festgelegt:

  • PublishUrl ist der Speicherort, an dem die Anwendung in der IDE veröffentlicht wird. Sie wird in das ClickOnce-Anwendungsmanifest eingefügt, wenn weder die InstallUrl- noch die UpdateUrl-Eigenschaft angegeben ist.

  • ApplicationVersion Gibt die Version der ClickOnce-Anwendung an. Die Version ist eine vierstellige Nummer. Wenn die letzte Ziffer ein "*" (Sternchen) ist, wird der ApplicationRevision-Wert durch den Wert ersetzt, der zur Build-Zeit ins Manifest eingefügt wurde.

  • ApplicationRevision gibt die Überarbeitung an. Dieser Wert ist eine ganze Zahl, die bei jeder Veröffentlichung in der IDE erhöht wird. Beachten Sie, dass es für Builds, die an der Befehlszeile ausgeführt werden, nicht automatisch erhöht wird.

  • Install bestimmt, ob es sich bei der Anwendung um eine installierte Anwendung oder um eine aus der Webanwendung ausgeführte Anwendung handelt.

  • InstallUrl (nicht angezeigt) ist der Speicherort, an dem Benutzer die Anwendung installieren. Wenn angegeben, wird dieser Wert in den setup.exe Bootstrapper verbrannt, wenn die IsWebBootstrapper Eigenschaft aktiviert ist. Es wird außerdem in das Anwendungsmanifest eingefügt, wenn UpdateUrl nicht angegeben ist.

  • SupportUrl (nicht angezeigt) ist der Speicherort, der im Dialogfeld "Programme hinzufügen/entfernen " für eine installierte Anwendung verknüpft ist.

Im Dialogfeld Anwendungsupdates, das von der Seite Veröffentlichen aus aufgerufen wird, werden die folgenden Eigenschaften festgelegt.

  • UpdateEnabled gibt an, ob die Anwendung nach Updates suchen soll.

  • UpdateMode Gibt Vordergrundaktualisierungen an. Für .NET-Projekte (.NET 5 und höher) wird Der Hintergrund nicht unterstützt.

  • UpdateUrl (nicht angezeigt) ist der Speicherort, von dem die Anwendung Updates empfängt. Wenn angegeben, wird dieser Wert in das Anwendungsmanifest eingefügt.

Die folgenden Eigenschaften werden im Dialogfeld "Veröffentlichungsoptionen" auf der Seite "Veröffentlichen" festgelegt.

  • PublisherName Gibt den Namen des Herausgebers an, der in der Eingabeaufforderung angezeigt wird, die beim Installieren oder Ausführen der Anwendung angezeigt wird. Bei einer installierten Anwendung wird er auch verwendet, um den Ordnernamen im Startmenü anzugeben.

  • ProductName Gibt den Namen des Produkts an, das in der Eingabeaufforderung angezeigt wird, die beim Installieren oder Ausführen der Anwendung angezeigt wird. Bei einer installierten Anwendung wird auch der Verknüpfungsname im Startmenü angegeben.

In dem Dialogfeld „Voraussetzungen”, das von der Seite „Veröffentlichen” aus zugänglich ist, werden die folgenden Eigenschaften festgelegt.

  • BootstrapperEnabled bestimmt, ob der setup.exe Bootstrapper generiert werden soll.

  • IsWebBootstrapper bestimmt, ob der setup.exe Bootstrapper über das Web oder im datenträgerbasierten Modus funktioniert.

Verwendungsoptionen: InstallURL, SupportUrl, PublishURL, UpdateURL

In der folgenden Tabelle sind die vier URL-Optionen für die ClickOnce-Bereitstellung aufgeführt.

URL-Option Description
PublishURL Erforderlich, um die ClickOnce-Anwendung auf einer Website zu veröffentlichen.
InstallURL Wahlfrei. Legen Sie diese URL-Option fest, wenn sich der Installationsort von der PublishURL unterscheidet. Sie könnten beispielsweise den PublishURL auf einen FTP-Pfad und den InstallURL auf eine URL festlegen.
SupportURL Wahlfrei. Legen Sie diese URL-Option fest, wenn sich die Support-Seite von dem PublishURL unterscheidet. Sie könnten z. B. den SupportURL auf die Kundenservice-Website Ihres Unternehmens festlegen.
UpdateURL Wahlfrei. Legen Sie diese URL-Option fest, wenn sich der Aktualisierungsspeicherort von dem InstallURLunterscheidet. Sie könnten beispielsweise den PublishURL auf einen FTP-Pfad und den UpdateURL auf eine URL festlegen.