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 (Integrated Development Environment, IDE) erstellt wurden. Sie können sogar ein mit Visual Studio erstelltes Projekt auf einem anderen Computer neu erstellen, auf dem nur .NET 5 oder eine höhere Version installiert ist. Auf diese Weise können Sie einen Build mithilfe eines automatisierten Prozesses reproduzieren, z. B. in einem zentralen Buildlab oder unter Verwendung erweiterter Skripttechniken, die über die Erstellung 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 ClickOnce-Anwendungsbereitstellungen für .NET

Durch Aufrufen von msbuild /target:publish mithilfe der Befehlszeile weist dieser Befehl das MSBuild-System an, das Projekt zu erstellen und eine ClickOnce-Anwendung im Ordner „publish“ zu erstellen. Dieser Befehl entspricht dem Befehl Veröffentlichen in der IDE.

Der Befehl führt die Datei msbuild.exe aus, die sich im Pfad der Visual Studio-Befehlszeilenumgebung befindet.

Das Ziel („target“) signalisiert MSBuild, wie der Befehl zu verarbeiten ist. Die wichtigsten Ziele sind das Ziel für den Build und das Ziel für die Veröffentlichung. Das Buildziel erfüllt den gleichen Zweck wie die Auswahl des Befehls „Erstellen“ (oder die Betätigung von F5) in der IDE. Wenn Sie Ihr Projekt lediglich erstellen möchten, können Sie msbuild eingeben. Dieser Befehl funktioniert, weil das Buildziel das Standardziel für alle von Visual Studio generierten Projekte ist. Daher müssen Sie das Buildziel nicht explizit angeben. Die Eingabe von msbuild ist daher derselbe Vorgang wie die Eingabe von msbuild /target:build.

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

Informationen zum Generieren einer vollständigen ClickOnce-Bereitstellung mithilfe des Befehlszeilentools „Mage.exe“ zur Erstellung Ihres ClickOnce-Manifests finden Sie unter Exemplarische Vorgehensweise: Manuelles Bereitstellen einer ClickOnce-Anwendung.

Erstellen und Kompilieren einer einfachen ClickOnce-Anwendung mit MSBuild

Am einfachsten lässt sich ein Veröffentlichungsprofil mit Visual Studio erstellen. Für die Veröffentlichung 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 benennen Sie das Projekt CmdLineDemo. Erstellen Sie anschließend 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 für die Bereitstellung einer ClickOnce-Anwendung ordnungsgemäß konfiguriert ist.

    Die Seite „Veröffentlichen“ wird angezeigt.

  3. Wählen Sie auf der Seite „Veröffentlichen“ Veröffentlichungsprofil hinzufügen, dann ClickOnce und schließlich Fertigstellen 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 auf der Seite „Veröffentlichen" zu schließen.

  5. Wählen Sie Veröffentlichen aus.

    Visual Studio generiert die ClickOnce-Bereitstellungsausgabe.

  6. Speichern Sie Ihr Projekt, und notieren Sie sich den Ordner, in dem Sie es gespeichert haben.

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

Reproduzieren des Builds mithilfe der Befehlszeile

  1. Beenden Sie Visual Studio.

  2. Wählen Sie im Windows-Startmenü Tools>Befehlszeile>Developer-Eingabeaufforderung aus.

    Die Developer-Eingabeaufforderung von Visual Studio wird geöffnet.

  3. Vergewissern Sie sich, dass in der Visual Studio-Eingabeaufforderung im aktuellen Verzeichnis der Speicherort des Projekts angezeigt wird, das Sie zuvor erstellt haben.

    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 rmdir /s publish ein.

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

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

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

    Durch die vorherigen Schritte wird eine vollständige ClickOnce-Anwendungsbereitstellung in einem Unterordner namens publish in Ihrem Projekt erstellt. CmdLineDemo.application ist das ClickOnce-Bereitstellungsmanifest. Der Ordner CmdLineDemo_1.0.0.0 enthält die Dateien CmdLineDemo.exe und CmdLineDemo.exe.manifest, das Anwendungsmanifest von ClickOnce. Setup.exe ist der Bootstrapper, der standardmäßig zur Installation von .NET konfiguriert ist. Die Dateien in diesem Ordner umfassen alle Dateien, die Sie benötigen, um Ihre Anwendung über das Internet, per UNC oder CD/DVD bereitzustellen.

Hinweis

Das MSBuild-System gibt den Speicherort für die Ausgabe mithilfe der Option PublishDir an, zum Beispiel msbuild /t:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>".

Ausgabe des Veröffentlichungsprozesses

MSBuild verwendet die Eigenschaft PublishDir, um den Speicherort der Buildausgabe (einschließlich Buildartefakten) festzulegen. 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 mithilfe der MSBuild-Befehlszeile außer Kraft setzen, indem Sie den /p-Switch verwenden. Wenn Sie die Einstellung überschreiben, wird die Veröffentlichungsausgabe am angegebenen Speicherort gespeichert. Die Ausgabe wird während des MSBuild-Schritts der Veröffentlichung generiert. Jedes MSBuild-Ziel mit AfterTargets="ClickOncePublish" wird nach der Erstellung dieser Kopie ausgeführt.

Die PublishUrl-Eigenschaft wird im Gegensatz zu PublishDir nicht im MSBuild-Schritt verwendet. PublishUrl wird ignoriert, wenn Sie MSBuild direkt für die Veröffentlichung über die Befehlszeile aufrufen.

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

Kopieren Sie bei MSBuild-Bereitstellungen, die nicht Visual Studio verwenden, alle Dateien im Bereitstellungsverzeichnis auf das Bereitstellungsziel oder -medium. Das Bereitstellungsverzeichnis kann entweder ein Ordner auf einer Website, einer FTP-Site, in einer Dateifreigabe oder auf einer CD-ROM sein. Sie können beispielsweise ein Drittanbietertool oder einen benutzerdefinierten MSBuild-Task verwenden, um die ClickOnce-Dateien zu kopieren.

Für jede Nachverarbeitung im Ordner PublishUrl benötigen Sie ein separates Skript.

Wichtig

Wenn PublishDir auf denselben Speicherort wie PublishUrl festgelegt ist, wird eine doppelte Kompilierungsausgabe in 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 PublishDir auf einen anderen Speicherort als PublishUrlfest. Am Ende des Veröffentlichungsvorgangs werden die relevanten ClickOnce-Dateien von PublishDir in den Speicherort PublishUrl kopiert.

Eigenschaften veröffentlichen

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 haben direkten Einfluss darauf, wie die ClickOnce-Anwendung erstellt wird.

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 überschreiben, ohne die Projektdatei selbst zu ändern. Der Code im folgenden Beispiel erstellt die ClickOnce-Anwendungsbereitstellung ohne den Bootstrapper:

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

In Visual Studio werden die Eigenschaften für die Veröffentlichung über die Eigenschaftsseiten Veröffentlichen, Sicherheit und Signieren im Projekt-Designer gesteuert. Für .NET-Projekte (.NET 5 höher) werden diese Einstellungen in der PUBXML-Datei bereitgestellt, auf die Sie in Visual Studio mithilfe des Veröffentlichungstools zugreifen können.

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

  • AssemblyOriginatorKeyFile legt die Schlüsseldatei fest, die zum Signieren der Manifeste Ihrer ClickOnce-Anwendungen verwendet wird. Mit diesem Schlüssel können Sie Ihren Assemblys auch einen starken Namen zuweisen. Diese Eigenschaft wird auf der Seite Signieren im Projekt-Designer festgelegt. Bei .NET-Windows-Anwendungen ist diese Einstellung weiterhin in der Projektdatei enthalten.

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

  • PublishUrl ist der Speicherort, an dem die Anwendung in der IDE veröffentlicht werden soll. Er wird in das ClickOnce-Anwendungsmanifest eingefügt, wenn die Eigenschaften InstallUrl und UpdateUrl nicht angegeben sind.

  • ApplicationVersion gibt die Version der ClickOnce-Anwendung an. Die Version ist eine vierstellige Zahl. Wenn die letzte Ziffer ein „*“ (Sternchen) ist, wird die ApplicationRevision durch den Wert ersetzt, der beim Erstellen in das Manifest eingefügt wurde.

  • ApplicationRevision gibt die Revision an. Dieser Wert ist eine ganze Zahl, die bei jeder Veröffentlichung in der IDE erhöht wird. Hinweis: Bei Builds, die über die Befehlszeile ausgeführt werden, wird der Wert nicht automatisch erhöht.

  • Install gibt an, ob es sich um eine installierte Anwendung oder eine aus dem Web ausgeführte Anwendung handelt.

  • InstallUrl (nicht angezeigt) ist der Speicherort, über den die Benutzer die Anwendung installieren. Sofern angegeben, wird dieser Wert in den Bootstrapper setup.exe aufgenommen, wenn die Eigenschaft IsWebBootstrapper aktiviert ist. Außerdem wird er 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 verlinkt ist.

Die folgenden Eigenschaften werden im Dialogfeld Anwendungsupdates festgelegt, das Sie über die Seite Veröffentlichen aufrufen.

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

  • UpdateMode legt Aktualisierungen im Vordergrund fest. Für .NET-Projekte (.NET 5 und höher) werden Aktualisierungen im Hintergrund nicht unterstützt.

  • UpdateUrl (nicht angezeigt) ist der Ort, von dem die Anwendung Updates erhält. Sofern angegeben, wird dieser Wert in das Anwendungsmanifest eingefügt.

Die folgenden Eigenschaften werden im Dialogfeld Veröffentlichungsoptionen festgelegt, auf das Sie über die Seite Veröffentlichen zugreifen.

  • PublisherName gibt den Namen des Herausgebers an, der beim Installieren oder Ausführen der Anwendung in der Eingabeaufforderung angezeigt wird. Für eine installierte Anwendung wird die Eigenschaft auch zur Angabe des Ordnernamens im Menü Start verwendet.

  • ProductName gibt den Namen des Produkts an, der beim Installieren oder Ausführen der Anwendung in der Eingabeaufforderung angezeigt wird. Für eine installierte Anwendung wird die Eigenschaft auch zur Angabe des Namens der Tastenkombination im Menü Start verwendet.

Die folgenden Eigenschaften werden im Dialogfeld Voraussetzungen festgelegt, auf das Sie über die Seite Veröffentlichen zugreifen.

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

  • IsWebBootstrapper legt fest, ob der Bootstrapper setup.exe über das Web oder im datenträgerbasierten Modus arbeitet.

Verwenden von Optionen: InstallURL, SupportUrl, PublishURL, and UpdateURL

Die folgende Tabelle zeigt die vier URL-Optionen für die ClickOnce-Bereitstellung.

URL-Option Beschreibung
PublishURL Erforderlich, um die ClickOnce-Anwendung auf einer Website zu veröffentlichen.
InstallURL Optional. Legen Sie diese URL-Option fest, wenn sich die Installationswebsite von der PublishURL unterscheidet. Sie könnten beispielsweise die PublishURL auf einen FTP-Pfad und die InstallURL auf eine Web-URL festlegen.
SupportURL Optional. Legen Sie diese URL-Option fest, wenn eine andere Supportwebsite als PublishURL verwendet werden soll. Sie könnten beispielsweise die SupportURL auf die Website des Kundensupports Ihres Unternehmens festlegen.
UpdateURL Optional. Legen Sie diese URL-Option fest, wenn der Speicherort für Updates sich von InstallURL unterscheidet. Sie könnten beispielsweise die PublishURL auf einen FTP-Pfad und die UpdateURL auf eine Web-URL festlegen.