Publishing Your App For Desktop
Preparing For Publish
Publish Using Visual Studio 2022
- In the debugger toolbar drop-down, select the
net9.0-desktop
target framework - Once the project has reloaded, right-click on the project and select Publish
- Select the Folder target for your publication then click Next
- Select the Folder target again then Next
- Choose an output folder then click Finish
- The profile is created, you can now Close the dialog
- In the opened editor, click
Show all settings
- Set Configuration to
Release
- Set Target framework to
net9.0-desktop
- You can set Deployment mode to either
Framework-dependent
orSelf-contained
- If
Self-contained
is chosen and you're targeting Windows, Target runtime must match the installed .NET SDK runtime identifier as cross-publishing self-contained WPF apps (e.g. win-x64 to win-arm64) is not supported for now.
- If
- You can set Target runtime, make sure it honors the above limitation, if it applies.
- Click Save
- Click Publish
Publish Using The CLI
On Windows/macOS/Linux, open a terminal in your csproj
folder and run:
dotnet publish -f net9.0-desktop
If you wish to do a self-contained publish, run the following instead:
dotnet publish -f net9.0-desktop -r {{RID}} -p:SelfContained=true
Where {{RID}}
specifies the chosen OS and Architecture (e.g. win-x64). When targeting Windows, cross-publishing to architectures other than the currently running one is not supported.
Note
When building under Linux or macOS, you may need to add the following parameter -p:TargetFrameworks=net9.0-desktop
for the publish command to succeed.
Windows ClickOnce
Uno Platform supports publishing desktop apps using ClickOnce to Windows environments.
In order to do so, you'll need to create a .pubxml
file using Visual Studio, or to use the file below:
Create a file named Properties\PublishProfiles\ClickOnceProfile.pubxml
in your project with the following contents:
<?xml version="1.0" encoding="utf-8"?>
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
<Project>
<PropertyGroup>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.*</ApplicationVersion>
<BootstrapperEnabled>True</BootstrapperEnabled>
<Configuration>Release</Configuration>
<CreateWebPageOnPublish>False</CreateWebPageOnPublish>
<GenerateManifests>true</GenerateManifests>
<Install>True</Install>
<InstallFrom>Disk</InstallFrom>
<IsRevisionIncremented>True</IsRevisionIncremented>
<IsWebBootstrapper>False</IsWebBootstrapper>
<MapFileExtensions>True</MapFileExtensions>
<OpenBrowserOnPublish>False</OpenBrowserOnPublish>
<Platform>x64</Platform>
<PublishProtocol>ClickOnce</PublishProtocol>
<PublishReadyToRun>False</PublishReadyToRun>
<PublishSingleFile>False</PublishSingleFile>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<SelfContained>True</SelfContained>
<SignatureAlgorithm>(none)</SignatureAlgorithm>
<SignManifests>False</SignManifests>
<SkipPublishVerification>false</SkipPublishVerification>
<TargetFramework>net9.0-desktop</TargetFramework>
<UpdateEnabled>False</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateRequired>False</UpdateRequired>
<WebPageFileName>Publish.html</WebPageFileName>
<!-- Those two lines below need to be removed when building using "UnoClickOncePublishDir" -->
<PublishDir>bin\Release\net9.0-desktop\win-x64\app.publish\</PublishDir>
<PublishUrl>bin\publish\</PublishUrl>
</PropertyGroup>
<ItemGroup>
<!-- This section needs to be adjusted based on the target framework -->
<BootstrapperPackage Include="Microsoft.NetCore.DesktopRuntime.8.0.x64">
<Install>true</Install>
<ProductName>.NET Desktop Runtime 8.0.10 (x64)</ProductName>
</BootstrapperPackage>
</ItemGroup>
</Project>
Once done, you can use the following command in your CI environment, or using a Developer Command Prompt for Visual Studio:
msbuild /m /r /target:Publish /p:Configuration=Release /p:PublishProfile="Properties\PublishProfiles\ClickOnceProfile.pubxml" /p:TargetFramework=net9.0-desktop
The resulting package will be located in the bin\publish
folder. You can change the output folder using /p:UnoClickOncePublishDir=your\output\directory
.
Depending on your deployment settings, you can run the Setup.exe
file to install the application on a machine.
Important
At this time, publishing with the Visual Studio Publishing Wizard is not supported for multi-targeted projects. Using the command line above is required.