Skip to content

Proposal: Easily enable building any Windows app from a single project template #491

@stevenbrix

Description

@stevenbrix

Proposal: Easily enable building any Windows app from a single project template

Summary

Today, there are many different "types" of Windows apps:

  1. Unpackaged
  2. Packaged Desktop
  3. Sparse Packages
  4. UWP

The development workflow for all of these different app types is vastly different, and in the case of Sparse Packages, there is no tooling support whatsoever. This proposal is to unify all of these paradigms into a single template, and allow developers to choose which app type they are building by setting a single MSBuild property in their project file:

Unpackaged app

<PropertyGroup>
  <WindowsPackageType>None</WindowsPackageType>
</PropertyGroup>

Sparse packaged app

<PropertyGroup>
  <WindowsPackageType>Sparse</WindowsPackageType>
</PropertyGroup>

Packaged desktop app

<PropertyGroup>
  <WindowsPackageType>Desktop</WindowsPackageType>
</PropertyGroup>

UWP app

<PropertyGroup>
  <WindowsPackageType>Universal</WindowsPackageType>
</PropertyGroup>

Rationale

  • The Windows app ecosystem is greatly divided in terms of developer experience. Project Reunion is all about bringing them together.
  • It allows developers to be flexible in their app choices. They can start with a UWP, and easily change to Desktop with minimal changes.
  • The tooling for this will be decoupled from VS, allowing for greater flexibility and also allow tooling and runtime to ship together.

Scope

Capability Priority
Allow .NET developers to build UWP apps that use .NET6 Must
Allow developers to no longer require the Windows Application Packaging project for packaged Desktop Must
Allow developers to use the existing workflows for creating app packages and publishing to the store Must
No changes to package.appxmanifest in order to switch between Sparse Universal or Desktop app Must
Enable .NET developers to build unpackaged apps using .NET CLI Must
Integrate with .NET ClickOnce deployment publishing Must
Allow developers to change WindowsPackageType in VS UI Should
Enable .NET developers to build Packaged apps using .NET CLI Could

Important Notes

There should be some default behavior that users can expect. This will be defined as:

  1. If there is no Package.appxmanifest in the project, then WindowsPackageType defaults to None
  2. If there is a Package.appxmanifest in the project, then WindowsPackageType defaults to Desktop.

Open Questions

Is WindowsPackageType the right property name? Should the existence of the Package.appxmanifest default into a Sparse app, and then developers just choose their container/package? This would mean there are only two options: Desktop and Universal.

Metadata

Metadata

Labels

area-DeveloperToolsIssues related to authoring (source and IDL), debugging, HotReload, LiveVisualTree, VS integrationfeature proposal

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions