Delen via


.NET ClickOnce-toepassingen bouwen vanaf de opdrachtregel

In Visual Studio kunt u projecten bouwen vanaf de opdrachtregel, zelfs als ze worden gemaakt in de IDE (Integrated Development Environment). U kunt zelfs een project herbouwen dat is gemaakt met Visual Studio op een andere computer waarop slechts .NET 5 of hoger is geïnstalleerd. Met deze mogelijkheid kunt u een build reproduceren met behulp van een geautomatiseerd proces, bijvoorbeeld in een centraal buildlab of met geavanceerde scripttechnieken buiten het bereik van het bouwen van het project zelf.

Opmerking

Als u .NET Framework ClickOnce-toepassingen vanaf de opdrachtregel wilt bouwen, raadpleegt u ClickOnce-toepassingen bouwen vanaf de opdrachtregel.

MSBuild gebruiken om .NET ClickOnce-toepassingsimplementaties te reproduceren

Wanneer u aanroept msbuild /target:publish op de opdrachtregel, geeft deze opdracht het MSBuild-systeem de opdracht om het project te bouwen en een ClickOnce-toepassing te maken in de publicatiemap. Deze opdracht is gelijk aan het selecteren van de opdracht Publiceren in de IDE.

Met deze opdracht wordt msbuild.exeuitgevoerd. Deze bevindt zich op het pad in de opdrachtpromptomgeving van Visual Studio.

Een 'doel' is een indicator voor MSBuild over het verwerken van de opdracht. De belangrijkste doelen zijn het doel 'build' en het 'publish'-doel. Het builddoel is hetzelfde als het selecteren van de build-opdracht (of het drukken op F5) in de IDE. Als u alleen uw project wilt bouwen, kunt u invoeren msbuild. Deze opdracht werkt omdat het builddoel het standaarddoel is voor alle projecten die door Visual Studio worden gegenereerd. Als gevolg hiervan hoeft u het builddoel niet expliciet op te geven. Daarom is invoeren msbuild dezelfde bewerking als het invoeren msbuild /target:build.

De /target:publish opdracht vertelt MSBuild om het publicatiedoel aan te roepen. Het publicatiedoel is afhankelijk van het builddoel, wat betekent dat de publicatiebewerking een superset is van de buildbewerking. Als u bijvoorbeeld een wijziging hebt aangebracht in Visual Basic- of C#-bronbestanden, wordt de bijbehorende assembly automatisch opnieuw opgebouwd met de publicatiebewerking.

Zie Walkthrough voor informatie over het genereren van een volledige ClickOnce-implementatie met behulp van het opdrachtregelprogramma Mage.exe om uw ClickOnce-manifest te maken : Handmatig een ClickOnce-toepassing implementeren.

Een eenvoudige ClickOnce-toepassing maken en bouwen met MSBuild

De eenvoudigste manier om een publicatieprofiel te maken, is door Visual Studio te gebruiken. Een publicatieprofiel is vereist om te publiceren met MSBuild.

Een ClickOnce-project maken en publiceren

  1. Open Visual Studio en maak een nieuw project.

    Kies de projectsjabloon Windows Forms App of WPF Application en geef het project CmdLineDemoeen naam en maak vervolgens het project.

  2. Klik met de rechtermuisknop op het project in Solution Explorer en selecteer Publiceren.

    Deze stap zorgt ervoor dat het project correct is geconfigureerd voor het produceren van een ClickOnce-toepassingsimplementatie.

    De pagina Publiceren wordt weergegeven.

  3. Selecteer op de pagina Publiceren een publicatieprofiel toevoegen, KlikOnce en selecteer Voltooien.

    Voor deze oefening kunt u de andere configuratie-instellingen op de pagina Publiceren negeren.

  4. Nadat het proces is voltooid, selecteert u Sluiten om het dialoogvenster Publiceren te sluiten.

  5. Selecteer Publiceren.

    Visual Studio genereert de ClickOnce-implementatie-uitvoer.

  6. Sla uw project op en noteer de maplocatie waarin het is opgeslagen.

    Met de voorgaande stappen maakt u een ClickOnce-project dat voor het eerst is gepubliceerd. U kunt nu de build buiten de IDE reproduceren.

De build via de opdrachtregel reproduceren

  1. Sluit Visual Studio af.

  2. Selecteer in het menu Start van Windows Hulpprogramma's>Opdrachtregel>Ontwikkelaarsopdrachtprompt.

    De Visual Studio Developer-opdrachtprompt wordt geopend.

  3. Controleer in de Opdrachtprompt van Visual Studio of in de huidige map de locatie wordt weergegeven van het project dat u eerder hebt gemaakt.

    Als u niet in de projectmap werkt, voert u een opdracht in om naar de gewenste locatie te gaan, zoals chdir C:\Users\username\source\repos\CmdLineDemo.

  4. Als u de bestaande bestanden wilt verwijderen die in de vorige sectie zijn geproduceerd, voert u het volgende in rmdir /s publish.

    Deze stap is optioneel, maar zorgt ervoor dat de opdrachtregelbuild alle nieuwe bestanden produceert.

    Voor .NET 5 en hoger is het bouwen van .NET ClickOnce-toepassingen vanaf de opdrachtregel vergelijkbaar. Het enige verschil is dat u een extra eigenschap moet opgeven voor het publicatieprofiel op de MSBuild-opdrachtregel.

  5. Voer msbuild /target:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>"in.

    De voorgaande stappen produceren een volledige ClickOnce-toepassingsimplementatie in een submap van uw project met de naam Publish. CmdLineDemo.application is het ClickOnce-implementatiemanifest. De map CmdLineDemo_1.0.0.0.0 bevat de bestanden CmdLineDemo.exe en CmdLineDemo.exe.manifest, het ClickOnce-toepassingsmanifest. Setup.exe is de bootstrapper, die standaard is geconfigureerd voor het installeren van .NET. De bestanden in deze map bestaan uit de volledige set bestanden die u nodig hebt om uw toepassing via internet of via UNC of CD/DVD te implementeren.

Opmerking

Het MSBuild-systeem maakt gebruik van de optie PublishDir om de locatie voor uitvoer op te geven, zoals msbuild /t:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific location>".

Procesuitvoer publiceren

MSBuild gebruikt de PublishDir eigenschap om de build-uitvoerlocatie in te stellen, inclusief buildartefacten. De PublishDir waarde die MSBuild als doel voor de publicatie gebruikt, wordt standaard verkregen van de PublishDir eigenschap in het .pubxml-bestand (.NET). U kunt dit gedrag ook overschrijven op de MSBuild-opdrachtregel met behulp van de /p switch. Als u de instelling overschrijft, gaat de publicatie-uitvoer naar de opgegeven locatie. De uitvoer wordt gegenereerd tijdens de MSBuild-stap van publiceren. Elk MSBuild-doel met AfterTargets="ClickOncePublish" wordt uitgevoerd nadat deze kopie is gemaakt.

De PublishUrl eigenschap, in tegenstelling tot PublishDir, wordt niet gebruikt in de MSBuild-stap. PublishUrl wordt genegeerd wanneer u MSBuild rechtstreeks aanroept om vanaf de opdrachtregel te publiceren.

Wanneer publiceren wordt gestart in Visual Studio IDE, roept Visual Studio MSBuild aan om artefacten naar de PublishDir locatie te publiceren. Nadat deze MSBuild-stap is voltooid, publiceert Visual Studio vervolgens ClickOnce-specifieke bestanden naar de locatie waarop wordt verwezen PublishUrl. Deze tweede stap wordt uitgevoerd binnen het Visual Studio-proces. U kunt tijdens deze stap geen doel/taak injecteren, omdat dit een Visual Studio-proces is.

Kopieer voor MSBuild-implementaties die visual Studio niet gebruiken alle bestanden in de implementatiemap naar het implementatiedoel of de media. De implementatiemap kan een map op een website of FTP-site, een bestandsshare of een cd-rom zijn. U kunt bijvoorbeeld een hulpprogramma van derden of een aangepaste MSBuild-taak gebruiken om de ClickOnce-bestanden te kopiëren.

Voor elke naverwerking in de PublishUrl map moet u een afzonderlijk script hebben.

Belangrijk

Als PublishDir is ingesteld op dezelfde locatie als PublishUrl, wordt de dubbele compilatie-uitvoer naar de locatie PublishUrl gekopieerd. U kunt dit probleem voorkomen in Visual Studio 2022 versie 17.4 en hoger door een nieuw profiel te maken. Het nieuwe profiel stelt PublishDir in op een andere locatie dan PublishUrl. Aan het einde van de publicatiebewerking worden de relevante ClickOnce-bestanden van de locatie PublishDir naar locatie PublishUrl gekopieerd.

Eigenschappen publiceren

Wanneer u de toepassing publiceert met behulp van de vorige procedures, worden de volgende eigenschappen ingevoegd in het publicatieprofielbestand voor .NET-projecten (.NET 5 en hoger). Deze eigenschappen beïnvloeden rechtstreeks hoe de ClickOnce-toepassing wordt geproduceerd.

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>

U kunt deze eigenschappen op de opdrachtregel overschrijven zonder het projectbestand zelf te wijzigen. Met de volgende code wordt bijvoorbeeld de ClickOnce-toepassingsimplementatie gebouwd zonder de bootstrapper:

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

Publicatie-eigenschappen worden beheerd in Visual Studio vanaf de eigenschappenpagina's Publiceren, Beveiliging en Ondertekening van projectontwerper. Voor .NET-projecten (.NET 5 en hoger) worden deze instellingen opgegeven in het pubxml-bestand, waartoe u toegang hebt in Visual Studio met behulp van het hulpprogramma Publiceren.

De volgende publicatie-eigenschappen worden ingesteld op verschillende eigenschappenpagina's van de toepassingsontwerper.

  • AssemblyOriginatorKeyFile bepaalt het sleutelbestand dat wordt gebruikt om uw ClickOnce-toepassingsmanifesten te ondertekenen. Dezelfde sleutel kan ook worden gebruikt om een sterke naam toe te wijzen aan uw assemblies. Deze eigenschap is ingesteld op de pagina Ondertekening van projectontwerper. Voor .NET Windows-toepassingen blijft deze instelling aanwezig in het projectbestand.

De volgende eigenschappen zijn ingesteld op de pagina Publiceren :

  • PublishUrl is de locatie waar de toepassing wordt gepubliceerd in de IDE. Dit wordt ingevoegd in het ClickOnce-toepassingsmanifest als de InstallUrl- en UpdateUrl-eigenschappen niet zijn opgegeven.

  • ApplicationVersion hiermee geeft u de versie van de ClickOnce-toepassing op. De versie is een getal van vier cijfers. Als het laatste cijfer een '*' (sterretje) is, dan wordt de ApplicationRevision-plaatsaanduiding vervangen door de waarde die tijdens de bouw in het manifest is ingevoegd.

  • ApplicationRevision geeft de revisie. Deze waarde is een geheel getal, dat elke keer dat u in de IDE publiceert, wordt verhoogd. Merk op dat het niet automatisch wordt verhoogd voor builds die worden uitgevoerd op de opdrachtregel.

  • Install bepaalt of de toepassing een geïnstalleerde toepassing of een run-from-webtoepassing is.

  • InstallUrl (niet weergegeven) is de locatie waar gebruikers de toepassing installeren. Indien opgegeven, wordt deze waarde in de setup.exe bootstrapper verbrand als de IsWebBootstrapper eigenschap is ingeschakeld. Het wordt ook ingevoegd in het toepassingsmanifest als de UpdateUrl-tag niet is opgegeven.

  • SupportUrl (niet weergegeven) is de locatie die is gekoppeld in het dialoogvenster Programma's toevoegen/verwijderen voor een geïnstalleerde toepassing.

De volgende eigenschappen worden ingesteld in het dialoogvenster Toepassingsupdates , geopend vanaf de pagina Publiceren .

  • UpdateEnabled geeft aan of de toepassing op updates moet controleren.

  • UpdateMode hiermee geeft u updates voor de voorgrond op. Voor .NET-projecten (.NET 5 en hoger) wordt Achtergrond niet ondersteund.

  • UpdateUrl (niet weergegeven) is de locatie van waaruit de toepassing updates ontvangt. Indien opgegeven, wordt deze waarde ingevoegd in het toepassingsmanifest.

De volgende eigenschappen worden ingesteld in het dialoogvenster Opties voor publiceren , die worden geopend vanaf de pagina Publiceren .

  • PublisherName hiermee geeft u de naam op van de uitgever die wordt weergegeven in de prompt die wordt weergegeven bij het installeren of uitvoeren van de toepassing. Voor een geïnstalleerde toepassing wordt deze ook gebruikt om de mapnaam op te geven in het menu Start .

  • ProductName geeft de naam op van het product dat wordt weergegeven in de prompt die wordt weergegeven bij het installeren of uitvoeren van de toepassing. Voor een geïnstalleerde toepassing wordt deze ook gebruikt om de naam van de snelkoppeling op te geven in het menu Start .

De volgende eigenschappen worden ingesteld in het dialoogvenster Vereisten , geopend vanaf de pagina Publiceren .

  • BootstrapperEnabled bepaalt of de setup.exe bootstrapper moet worden gegenereerd.

  • IsWebBootstrapper bepaalt of de setup.exe bootstrapper via internet of in de schijfmodus werkt.

Gebruiksopties: InstallURL, SupportUrl, PublishURL, UpdateURL

In de volgende tabel ziet u de vier URL-opties voor ClickOnce-implementatie.

URL-optie Description
PublishURL Vereist voor het publiceren van de ClickOnce-toepassing op een website.
InstallURL Optional. Stel deze URL-optie in als de installatiesite anders is dan de PublishURL. U kunt bijvoorbeeld het PublishURL op een FTP-pad instellen en de InstallURL url instellen op een web-URL.
SupportURL Optional. Stel deze URL-optie in als de ondersteuningssite anders is dan de PublishURL. U kunt bijvoorbeeld de SupportURL klantondersteuningswebsite van uw bedrijf instellen.
UpdateURL Optional. Stel deze URL-optie in als de updatelocatie anders is dan de InstallURL. U kunt bijvoorbeeld het PublishURL op een FTP-pad instellen en de UpdateURL url instellen op een web-URL.