-
Notifications
You must be signed in to change notification settings - Fork 413
Closed
Labels
area-DeveloperToolsIssues related to authoring (source and IDL), debugging, HotReload, LiveVisualTree, VS integrationIssues related to authoring (source and IDL), debugging, HotReload, LiveVisualTree, VS integrationfeature proposal
Milestone
Description
Proposal: Easily enable building any Windows app from a single project template
Summary
Today, there are many different "types" of Windows apps:
- Unpackaged
- Packaged Desktop
- Sparse Packages
- 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:
- If there is no Package.appxmanifest in the project, then
WindowsPackageTypedefaults toNone - If there is a Package.appxmanifest in the project, then
WindowsPackageTypedefaults toDesktop.
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.
winston-de, soumyamahunt, XamDR, tomzorz, Gavin-Williams and 3 moremveril and MattBDevmveril, tomzorz, MattBDev and agniuksmrlacey
Metadata
Metadata
Assignees
Labels
area-DeveloperToolsIssues related to authoring (source and IDL), debugging, HotReload, LiveVisualTree, VS integrationIssues related to authoring (source and IDL), debugging, HotReload, LiveVisualTree, VS integrationfeature proposal