-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
Add MSIX support #1522
Add MSIX support #1522
Conversation
@christophwille I'm seeing test failures when built with VS 2019 on Pipelines, it's probably a simple fix but I'm not entirely sure where to look: Ring a bell?
|
@siegfriedpammer @dgrunwald any ideas on those test failures? AppVeyor doesn't complain. |
Is |
@siegfriedpammer should be, though I've never used it myself |
One note about AppVeyor -- I believe the VS 2019 image also has VS 2017 on it, doesn't it? I ask because the |
According to https://www.appveyor.com/docs/windows-images-software/ (where the preview image is not listed explicitly) it does not look like that multiple VS versions are installed in one image. But AppVeyor seems to be happy: https://ci.appveyor.com/project/icsharpcode/ilspy/builds/25043742 |
@christophwille seems odd then because that registry key doesn't exist for me on a clean 2019 install (machine never had 2017 on it): https://github.com/icsharpcode/ILSpy/blob/master/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs#L195 Also, the path to MSBuild is different in 2019. https://github.com/icsharpcode/ILSpy/blob/master/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs#L206 It's no longer in |
If it helps, this should repro locally as well with the updated MSBuild detection logic that ensures 2019 is used. Check out this PR branch, comment out the |
I cannot reproduce this locally using your branch with only VS 2019 installed. |
The tech part of this is pretty much done. It generates all of the packages/zip files and can replace AppVeyor if you choose. Pipelines is free for OSS projects. I have not yet done the release management part as that should be done in the Pipelines account we'll use. If you want to see what the build looks like, it's here for now: https://dev.azure.com/onovotny/GitBuilds/_build/results?buildId=1885 Do we use mine, is there one already? We'll need a code signing cert for the CI version for sideloading. Does ICSharpCode have one already? If not, it's a very good reason to join the .NET Foundation. We provide EV code signing certs to member projects for free, which means you'll never have any smart screen issues on new releases again. We can follow that thread up separately. "How we want this to work" would depend on where the CI/CD ultimately sits. If it's a project Pipeline, it's pretty easy to make this all seamless. I can set it up to create a GitHub release and push to the store upon approval of specific builds. CI would get pushed out continuously. |
There is no pipelines account on our side (back in February I wanted to give it a try, but failed twice to link it and gave up) nor any code signing certs. |
How would you like to proceed? My recommendation is to join the .NET Foundation, I know we’d love to have you. That provides many services, including a Pipelines project on our account, certs, and a CLA bot for ensuring contributions are okay. Is that something you’d be interested in? The Foundation doesn’t interfere with how you want to run your project, it’s realky there to help support you. |
I had a chat with Siegfried - he had VS2017 on the box, but uninstalled (so technically, he has only VS2019 on it, but who knows what the uninstall left behind) |
In-private window to the rescue I was able to connect Azure Pipelines https://icsharpcode.visualstudio.com/icsharpcode-pipelines (empty cause it won't let me select the existing yaml on a PR branch and I have a feeling it needs more configuration than just that). Now for my understanding: Store submission doesn't need a real cert. Only CI would if the dev cert isn't installed first (at least that was the sideloading story way back). |
The unit testing problem should be fixed now: In icsharpcode/ILSpy-tests@28f74a2 I patched the DLL to include paths to newer versions of the SDKs. |
A bit more color to the fix from Siegfried - we are using an older version of Mono.Cecil.Tests.dll (in the Tests repository) for the test. Its code reads like this
It does actually find peverify, but only really the fallback (3rd one), which is .NET 3.5 and errors out like this:
Newer versions look like this https://github.com/jbevain/cecil/blob/master/Test/Mono.Cecil.Tests/CompilationService.cs#L356 but updating was not an option, so Siegfried patched the binary. |
@christophwille thanks for the explanation, it would have taken me a long time to find that! The store does not need a signed build, they sign it for you during the publish. The cert is needed for a sideloaded/CI package. The cert (particularly an EV cert), also helps with your "regular" exe release since it'll prevent SmartScreen warnings on new releases. |
@onovotny Been thinking a bit about the options (and associated potential timelines) for the store builds. In the short term doing code signing isn't an option for us. Setting up a store account on the other hand is easy (for the "manual" releases). Could we keep the CI builds on your end (as well as distribution)? If possible. |
I'm certainly happy to do CI builds, but am a bit reluctant about using my certificate for it. Can we get you into the .NET Foundation where we can issue you a certificate in the project's name (better yet, in ICSharpCode's name)? |
I have created an issue on joining dotnetfdn #1525 - please add information on what would be necessary on our end (I presume you know that). Then we can have a discussion there and keep technical stuff here. Code-wise, this PR is done. If we merge now, I could set up a pipeline with the yaml and get bits that are uploadable to the store (no CI with auto-update though). Would that be an acceptable short-term solution? |
Getting it into the store would be amazing! I'm happy to setup a release management pipeline in the Pipelines instance that lets you upload to the store there with an approval button. There's a one time setup that you need as is documented here in the extension: Once that's done, after the first submission, the rest can be done via the release process. |
As much as I love AAD in a corporate setting (and as a dev), that is definitely overkill for our open source project. Especially because https://partner.microsoft.com/en-us/dashboard/registration/AccountInfo would be Individual for us ("Develop and sell apps, add-ins, and services as an individual, student, or unincorporated group") |
Created two issues to track the ToDos for MSIX CI drop location/certificate as well as store publishing. |
This PR is to add MSIX support. Along the way, it also adds Azure Pipeline support as a baseline.
Fixes #1450
To Do: