Ändern der ClickOnce-Einstellungen in Abhängigkeit von der ausgewählten Buildkonfiguration (nur .NET Framework-Version)

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Umwelt

Fachwerk
  • Windows Forms (.NET Framework) im Allgemeinen
  • WPF (.NET Framework) allgemein

Prämisse

Der Inhalt dieser Tipps sind Projektannahmen für .NET Framework. Im Falle von .NET (Core) können Sie ClickOnce-Veröffentlichungseinstellungen in der Buildkonfigurationseinheit festlegen, also veröffentlichen Sie bitte wie gewohnt.

Es wird auch davon ausgegangen, dass Sie über ausreichende Kenntnisse verfügen, um ClickOnce normal zu verwenden.

Zuerst

Da ein .NET Framework-Projekt nur über eine ClickOnce-Veröffentlichungseinstellung verfügen kann, Um beispielsweise mit unterschiedlichen Einstellungen in einem Debugbuild und einem Releasebuild zu veröffentlichen, müssen Sie die Einstellungen vor der Veröffentlichung jedes Mal manuell ändern.

Sie können zwei Einstellungen vornehmen, indem Sie die Projekte in einer DLL gruppieren und zwei separate Projekte für die Veröffentlichung erstellen. Sie haben zweimal dieselbe Konfiguration, und wenn für die Veröffentlichung Ressourcendateien erforderlich sind, müssen Sie zwei davon gleichzeitig haben, sodass die Verwaltung mühsam sein wird.

In diesem Abschnitt wird beschrieben, wie Sie eine Batchdatei (.bat) so viele Einstellungen wie nötig erstellen und ClickOnce veröffentlichen.

Konfigurieren von ClickOnce

Dieses Mal wurden "Speicherort des öffentlichen Ordners" und "Installationsordner-URL" für "Debug-Build" und "Release-Build" getrennt. Andere Einstellungen werden mit der Richtlinie erstellt, sie gemeinsam zu gestalten. Andere Parameter können getrennt sein, aber es kann umständlich sein, die "Anwendungsdateien" und "Voraussetzungen" getrennt zu halten.

Öffnen Sie zunächst das Projekt und geben Sie wie gewohnt Ihre ClickOnce-Einstellungen ein. Der Eingabeinhalt wird auf Parameter festgelegt, die von Debug ausgegeben werden sollen, aber alles andere als der allgemeine Teil ist in Ordnung, solange es keinen Fehler verursacht.

Im Folgenden finden Sie ein Beispiel für die Konfiguration:

Nachdem Sie die Eingabe vorgenommen haben, speichern Sie das Projekt.

Erstellen einer .bat Datei für die ClickOnce-Veröffentlichung

Da es mit einem Befehl ausgegeben wird, kann es auf anderen Medien wie PowerShell ausgeführt werden, aber diesmal wird es als BAT-Datei erstellt.

Sie können die Datei überall erstellen, aber der Einfachheit halber erstelle ich sie am Speicherort der Lösungsdatei (.sln). Da es sich um eine BAT-Datei handelt, ist die Zeichencodierung Shift-JIS. PS1 kann UTF-8 (BOM) sein.

Öffnen Sie die BAT-Datei in einem Texteditor, und geben Sie Folgendes ein: Beachten Sie, dass PowerShell das Escapen möglicherweise anders handhabt.

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

Die erste Zeile verweist auf die Position von "Developer Command Prompt". Dieser Pfad hängt von der Version von Visual Studio ab, die Sie installieren.

Jeder Teil des Pfades hängt von den folgenden Bedingungen ab:

Programmdateien
Pfadbedingungen
Programmdateien
  • Wenn Sie ein 32-Bit-Betriebssystem verwenden
  • Wenn Sie eine 64-Bit-Version von Visual Studio auf einem 64-Bit-Betriebssystem verwenden
Programme (x86)
  • Wenn Sie eine 32-Bit-Version von Visual Studio auf einem 64-Bit-Betriebssystem verwenden
2022
Dies hängt von der Version von Visual Studio ab, die Sie installieren.
Gemeinschaft
Dies hängt von der Edition von Visual Studio ab, die Sie installieren. "Community", "Professional", "Enterprise" usw. werden eingetragen.

In der zweiten Zeile wird das aktuelle Verzeichnis an den Speicherort der BAT-Datei verschoben.

Die dritte Zeile ist der ClickOnce-Buildverarbeitungsbefehl. Die Bedeutung jedes Parameters ist wie folgt.

des
BeschreibungParameternamens
msbuild Ein Befehl, der den Buildprozess ausführt. Zuerst erforderlich und schriftlich.
Klicken Sie auf OnceBuildConfiguration.sln Beschreibt den Dateinamen der zu erstellenden Projektmappe.
/t:Publish Gibt einen ClickOnce-Buildprozess an.
/p:Configuration=Debug Gibt die Buildkonfiguration an, die Sie für die Projektmappe festgelegt haben. Wenn Sie die zu erstellende Debug-Konfiguration ändern möchten, ändern Sie den Text im Abschnitt "Debuggen".
/p:PublishUrl="publish\Debug\\" Überschreiben Sie den Wert "Speicherort für Öffentliche Ordner" auf dem Visual Studio-Veröffentlichungsbildschirm mit der angegebenen Zeichenfolge, und führen Sie ihn aus.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Überschreiben Sie den Wert "Installationsordner-URL" auf dem Visual Studio-Veröffentlichungsbildschirm mit der angegebenen Zeichenfolge, und führen Sie sie aus.

Einige der Parameter wurden extrahiert, aber siehe die folgenden Links für andere Parameter:

Als Beispiel werden wir dieses Mal die Veröffentlichungsparameter von ClickOnce in jedem Debug- und Release-Build ändern, sodass wir sie wie folgt erstellen.

Veröffentlicht von ClickOnceDebug.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

ClickOnceRelease veröffentlichte .bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\"

ClickOnce veröffentlicht die Ausführung von BAT-Dateien

Versuchen Sie, jede BAT-Datei auszuführen.

Die Eingabeaufforderung wird gestartet, und der Build wird gestartet.

Tatsächlich ist die BAT-Datei, die diesmal erstellt wird, nur ein Prozess bis zum Build, so dass die Datei nicht im "Speicherort des öffentlichen Ordners" erstellt wird. Die für die Veröffentlichung notwendigen Dateien wurden erstellt. Im Falle eines Debugbuilds sollten Sie beispielsweise eine Datei im "< Projektordnerpfad >\bin\Debug\app.publish\" haben. Kopieren Sie diese Dateien in die "URL des Installationsordners" und es funktioniert korrekt als ClickOnce.

Veröffentlichen an einem Speicherort für Öffentliche Ordner (wenn das Ziel ein Ordner ist, auf den Sie direkten Zugriff haben)

Die folgende Website wird als Referenz für diesen Teil verwendet.

Dieser Bereich steht nicht in direktem Zusammenhang mit der Verarbeitung von ClickOnce, daher finden Sie auf der oben genannten Website eine detaillierte Erklärung.

Öffnen Sie zunächst die Projektdatei (.csproj) in einem Texteditor. Es handelt sich nicht um eine Lösungsdatei.

Darin befindet sich eine XML-Struktur, und wenn Sie nach unten scrollen, fügen Sie der Zeile darüber den </Project> folgenden Code hinzu. Wenn es sich um einen Prämissenprozess für die Dateikopie handelt, ist der Inhalt festgelegt, aber der Teil von ist CopyPublishedApplication willkürlich. Sie werden diesen Namen später verwenden.

<!-- ここから ClickOnce の発行処理 -->
<Target Name="CopyPublishedApplication">
  <ItemGroup>
    <MySourceFiles Include="$(PublishDir)**\*.*" Exclude="$(PublishDir)$(AssemblyName).exe" />
  </ItemGroup>
  <PropertyGroup>
    <AppricationDir>$(_DeploymentApplicationDir.Substring($(PublishDir.Length)))</AppricationDir>
  </PropertyGroup>
  <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(PublishUrl)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- ここまで ClickOnce の発行処理 -->

Speichern Sie es, sobald Sie es eingegeben haben.

Öffnen Sie dann jede BAT-Datei, und fügen Sie sie den /t:CopyPublishedApplication msbuild-Parametern hinzu. CopyPublishedApplication ist der Name, den ich dir vorhin gegeben habe.

ClickOnceDebug veröffentlicht.bat (Beispiel)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

Wenn Sie die BAT-Datei ausführen, sehen Sie, dass die Datei in den Speicherort Öffentlicher Ordner kopiert wurde. Zu diesem Zeitpunkt gibt es keinen < Programmnamen >.exe Datei, aber es ist unnötig, weil es ursprünglich in setup.exe enthalten ist.

Ergänzung

Wenn die Projektmappe mehrere Projekte enthält, wird sie für alle Projekte ausgeführt CopyPublishedApplication . In den meisten Fällen wird es nur auf das exe-Projekt festgelegt, sodass beim Ausführen in CopyPublishedApplication einem anderen Projekt ein Fehler angezeigt wird. Es ist sicher, es zu ignorieren, da es nur eine Nachricht anzeigt.

Veröffentlichen an einem Speicherort für Öffentliche Ordner (für FTP)

Ich habe es nicht ausprobiert, aber Sie möchten vielleicht auf die folgenden Websites verweisen.

Andere Dinge, die Sie beachten sollten