Skip to content

[BLOG] .NET Blog Draft#521

Open
zateutsch wants to merge 19 commits into
mainfrom
zt/dotnet-blog
Open

[BLOG] .NET Blog Draft#521
zateutsch wants to merge 19 commits into
mainfrom
zt/dotnet-blog

Conversation

@zateutsch
Copy link
Copy Markdown
Contributor

Draft for .NET blogpost.

Let me know if you guys have any feedback, major or minor.

Copilot AI review requested due to automatic review settings May 5, 2026 21:15
@zateutsch zateutsch added DO-NOT-MERGE dotnet tag for issues or feature requests related to .NET-specific functionality (winforms, wpf...) labels May 5, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a draft blog post documenting how WinApp CLI helps .NET developers run with package identity (via dotnet run) and create signed MSIX packages (via winapp pack), plus pointers to related docs and the VS Code extension.

Changes:

  • Introduces a new blog draft covering winapp init, dotnet run identity enablement, and optional execution alias setup for console apps.
  • Adds a packaging walkthrough using winapp cert generate, winapp pack, and winapp cert install.
  • Includes links to supporting documentation, samples, and the VS Code extension.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
zateutsch and others added 6 commits May 5, 2026 17:25
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 5, 2026

Build Metrics Report

Binary Sizes

Artifact Baseline Current Delta
CLI (ARM64) 31.26 MB 31.26 MB ✅ 0.0 KB (0.00%)
CLI (x64) 31.61 MB 31.61 MB ✅ 0.0 KB (0.00%)
MSIX (ARM64) 13.13 MB 13.13 MB 📈 +0.0 KB (+0.00%)
MSIX (x64) 13.96 MB 13.96 MB 📉 -0.1 KB (-0.00%)
NPM Package 27.34 MB 27.34 MB 📈 +0.2 KB (+0.00%)
NuGet Package 27.42 MB 27.42 MB 📈 +0.3 KB (+0.00%)
VS Code Extension 20.15 MB 20.15 MB 📈 +0.0 KB (+0.00%)

Test Results

993 passed, 1 skipped out of 994 tests in 519.4s (+9.6s vs. baseline)

Test Coverage

16.7% line coverage, 34.8% branch coverage · ✅ no change vs. baseline

CLI Startup Time

41ms median (x64, winapp --version) · ✅ +7ms vs. baseline


Updated 2026-05-13 19:43:24 UTC · commit bf2fca2 · workflow run

Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Copy link
Copy Markdown
Contributor

@chiaramooney chiaramooney left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks great!

Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md
Comment thread docs/blogs/dotnet-identity-and-packaging.md
@@ -0,0 +1,142 @@
# Packaging and Package Identity for .NET apps with winapp CLI

Package identity has often been a pain point for developers looking to build apps that integrate with Windows APIs. Many modern Windows features, like push notifications or the AI APIs, are gated behind package identity. For Windows apps that are unpackaged by default (like .NET console or WPF applications), this meant wrestling with package manifests, build configurations, and certs to bring your app up to speed.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if there is a way to show the problems we are solving with the cli up front instead of just telling?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Open to suggestions here - I'm not sure what the best way to do this would be without getting overcomplicated. Do you want more specifics on what was previously required?

Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md Outdated
Comment thread docs/blogs/dotnet-identity-and-packaging.md
zateutsch and others added 10 commits May 12, 2026 15:21
Co-authored-by: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com>
Co-authored-by: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com>
Co-authored-by: Nikola Metulev <nmetulev@users.noreply.github.com>
Co-authored-by: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com>
Co-authored-by: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com>
Co-authored-by: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com>
Co-authored-by: Jaylyn Barbee <51131738+Jaylyn-Barbee@users.noreply.github.com>
@zateutsch zateutsch requested a review from nmetulev May 12, 2026 20:36
winapp unregister
```

For more details on how exactly the winapp CLI works with dotnet under the hood, check out the [`dotnet run` support docs](https://github.com/microsoft/winappCli/blob/main/docs/dotnet-run-support.md).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: WinApp CLI


Package identity has often been a pain point for developers looking to build apps that integrate with Windows APIs. Many modern Windows features, like push notifications or the AI APIs, are gated behind package identity. For Windows apps that are unpackaged by default (like .NET console or WPF applications), this meant wrestling with package manifests, build configurations, and certs to bring your app up to speed.

With the [**WinApp CLI**](https://github.com/microsoft/winappCli), you can quickly tackle the problem of package identity, both in the context of local running and debugging, and for packaging applications as MSIX for distribution. Inside the .NET ecosystem, WinApp supports .NET console, WPF, WinForms, and WinUI3 applications.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really, we support any .net desktop framework, even things like avalonia, let's not limit it to just these, leave it open ended

- Ensures the `TargetFramework` specified in your `.csproj` is targeting a compatible version of the Windows platform. This is required to properly enable access to Windows APIs.
- Adds three package references to your `.csproj`:
- `Microsoft.WindowsAppSDK` This dependency is the Windows SDK itself, and grants access to Windows APIs.
- `Microsoft.Windows.SDK.BuildTools` Windows Build Tools are required for packaging and signing your application.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought we are no longer adding the buildtools?

- `Microsoft.WindowsAppSDK` This dependency is the Windows SDK itself, and grants access to Windows APIs.
- `Microsoft.Windows.SDK.BuildTools` Windows Build Tools are required for packaging and signing your application.
- `Microsoft.Windows.SDK.BuildTools.WinApp` This is the NuGet package for WinApp itself. This dependency enables seamless `dotnet run` usage via WinApp.
- Generates both a `Package.appxmanifest` and required asset files, placed in an `Assets` directory. These files are required to grant package identity.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mention that if they already have a manifest or any of the above, it won't overwrite them


If you want more control over the init experience, run without the `--use-defaults` flag. This will give you control over versioning, package and publisher name, and allow you to manage which dependencies are added to your project.

### 2. Debug with `dotnet run`
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need a bit more meat here - for example, explain that because the winapp nuget package is referenced, when dotnet run is run, it will call winapp run to run the app packaged. You can also mention two other things here:

  1. how to disable running packaged when using dotnet run, what propoerty to use
  2. passing arguments to do things like getting debug output or launching via alias

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DO-NOT-MERGE dotnet tag for issues or feature requests related to .NET-specific functionality (winforms, wpf...)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants