-
Notifications
You must be signed in to change notification settings - Fork 337
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Provide a release package for non-nuget compatible builds #1463
Comments
Are you advocating CMake specifically, a .zip containing some semi-structured organization and/or other format(s)? |
Just a zip file. I can then write an extraction function in our CMake scripts. |
Some of the diversity in the directory structure was churn / work in progress that should be cleaned up in a future update. @MarkIngramUK Assuming consistent structure in the nuget, which is essentially just a ZIP and accessible via command line using nuget.exe or nuget APIs (https://docs.microsoft.com/en-us/nuget/api/package-base-address-resource), would that be sufficient? |
I think some of the issue is that when using Visual Studio, the process is simple; add a reference to the Nuget package and away you go. However when you don't have that luxury, you're just left with trying to work out how to use WindowsAppSDK on your own. I can open up the Nuget package, but I don't know what files are required to make the features I'm using work (e.g. MRTCore and AppLifecycle). I can add all of the contents, but then I get questions from colleagues like, "What is FrameworkUdk", and my answer is, "I don't know.". Ultimately I see Nuget as an additional complication. As cross-platform C++ developers, we're used to configuring include directories, lib directories, and copying binaries to output directories. I feel like we need a release mechanism that works for us too. This is why I was suggesting a smaller, simpler, package, just for C++ developers, who want to adopt WindowsAppSDK. Having directories like |
Or thinking about it, adding WindowsAppSDK to |
Vcpkg is a great suggestion, and one that's already on our radar per issue #74 that you opened in the past. We haven't lost track of that one, just haven't made it that far in the backlog. We're going to continue to focus on the VS msbuild & .NET experience a little longer before we start taking on new scenarios. In the meantime we will continue to make the nuget more consistent and easier to consume. Since #74 would satisfy this request as well, I'm going to resolve this as a duplicate. If there's additional input you have about how to provide support in cmake or vcpkg, let's move the discussion over to that issue to avoid duplication. |
I actually forgot I had raised #74 when I posted my last comment 🤦♂️ . I still think there's merit in providing a zip for the non MSBuild scenario in the intermediate period, but I would settle for a more consistent structure in the nuget package, and perhaps just a little bit of info on what files certain features actually require. e.g. DWriteCore was added in the Also, what about the manifests that are in the latest nuget package? As long as some of the guess work is taken out, then it will make updating the WindowsAppSDK much simpler for us. Thanks @BenJKuhn 👍 |
I've just grabbed preview2, and started the process of extracting relevant files. The I can guess that |
Looks like git is doing the heavy lifting for me:
|
Argh.
Looks like I'm missing something, but I don't know what... I have all of the winmd files from cppwinrt version: 2.0.210722.2 Input to cppwinrt (from preview2):
For now, I've deleted |
Proposal: Provide a release package for non-nuget compatible builds
Summary
Our applications are cross-platform C++, and as such we use CMake for our projects. CMake doesn't support nuget, so in order to use WindowsAppSDK, we need to manually download the
Microsoft.WindowsAppSDK.x.x.x-yyy.nupkg
and extract the contents.There's no documentation as to what files are required for native C++ builds, so I've been digging around the package looking for relevant headers, libs, dlls, and winmd (as we have a CMake build step that uses cppwinrt to generate headers). This was OK with
1.0 experimental1
, but with1.0 preview1
there are additional directory structures which aren't obvious whether they're required or not. e.g./include/FrameworkUdk
, or in the case oflib/native/windows/<arch>/release
andlib/native/include
doesn't seem to fit with the existing structure.I propose a C++ compatible zip release with the following directory structure:
Where
[arch]
isarm64
,x64
, orx86
.Rationale
Scope
Important Notes
Open Questions
The text was updated successfully, but these errors were encountered: