Skip to content
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

msbuild: init at 15.6 #43680

Closed
wants to merge 2 commits into from
Closed

msbuild: init at 15.6 #43680

wants to merge 2 commits into from

Conversation

leo60228
Copy link
Member

Motivation for this change

xbuild, which is part of Mono, is deprecated, in favor of the recently open-source MSBuild used on Windows. MSBuild has an incredibly complicated build system, which appears to fail silently on non-FHS systems. Thus, I used the official Ubuntu binaries. These require relatively little patching, as .NET is a bytecode language, so patchelf is not necessary. I don't have a Mac to test, but it may work on MacOS as well for this reason. This is definitely a stopgap; however, MSBuild's custom build system will require extensive work to be used, or even emulated, on NixOS.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Fits CONTRIBUTING.md.

@leo60228
Copy link
Member Author

Don't merge this! It looks for a file in the mono installation whenever it tries to build a project, but it's not there. I'm not sure where that file is supposed to come from.

@leo60228
Copy link
Member Author

This file exists, and is in a subdirectory. Weird.

@leo60228
Copy link
Member Author

I have an untested fix locally, but it's gonna take a minute to build Mono.

@leo60228
Copy link
Member Author

It built, having some difficulty testing it, will push in a few minutes.

@leo60228
Copy link
Member Author

Was compiling something, OOMKiller killed nix-env. One minute...

@leo60228
Copy link
Member Author

My fix didn't work, it should be pretty simple to fix, though. Can someone with a machine better at compilation try to fix this? Just try to compile any C# application. Here's the error:

/nix/store/j7ka048scndzwcv9qqsgq8iv5iqd06gg-msbuild-15.6/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props(29,3): error MSB4019: The imported project "/nix/store/2x5v6ph7c54cqhzld9kpnpwzqhyzxccb-mono-5.8.0.108/lib/mono/xbuild/15.0/Microsoft.Common.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [/home/leo60228/Everest.InstallerX/Everest.InstallerX.Desktop/Everest.InstallerX.Desktop.csproj]

The failed fix was to symlink that in Mono's postInstall, as that directory is there in Mono, just at a different path.

@leo60228
Copy link
Member Author

I think I have a working fix, but I had a power outage while I was compiling Mono. It might still be a little while.

@leo60228
Copy link
Member Author

Update: It now attempts to build C# (yay!) but is failing to search the GAC (boo), where the standard library is located via.

@leo60228
Copy link
Member Author

I have a fixed version, but am having some trouble rebasing onto master. It'll be a few minutes.

@leo60228 leo60228 closed this Jul 20, 2018
@leo60228
Copy link
Member Author

help

@leo60228
Copy link
Member Author

Fixed version.

@leo60228 leo60228 reopened this Jul 20, 2018
''
# Make MSBuild stop complaining
+ ''
cp $out/lib/mono/xbuild/14.0/Microsoft.Common.props $out/lib/mono/xbuild/15.0/Microsoft.Common.props
Copy link
Member

Choose a reason for hiding this comment

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

Was this an error or a warning? If it was just a warning i think it’s best to not mess with this stuff.

Copy link
Member Author

Choose a reason for hiding this comment

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

It was an error.

Copy link
Member

Choose a reason for hiding this comment

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

I think I've encountered the same error also. When compiling a project, the compilation would fail with

  Microsoft.Common.CurrentVersion.targets(3446, 5): [MSB3491] Could not write lines to file "/Debug/ClientLib.csproj.CoreCompileInputs.cache". Could not find a part of the path "/Debug/ClientLib.csproj.CoreCompileInputs.cache".
  Microsoft.Common.CurrentVersion.targets(5101, 5): [MSB3191] Unable to create directory "/Debug/". Access to the path "/Debug/" is denied.

(it attempts to write to the filesystem root, because a prefix is not set correctly).

I resolved the same thing by 1) downloading msbuild and unpacking msbuild, 2) setting it in jetbrains.rider in GUI in Use custom MSBuild version to

/home/jdanek/Downloads/msbuild/MSBuild.dll

and 3) adding to my .bashrc the following

export MSBuildExtensionsPath=/home/jdanek/Downloads/msbuild/Extensions

Copy link
Member Author

Choose a reason for hiding this comment

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

Update on this: I cannot recall, but I believe (knowing me probably not) the upstream Mono maintainers told me to apply this. I completely forgot about this until yesterday, though, you might have to check.


unpackPhase = "dpkg-deb -x $src .";
installPhase = "
substituteInPlace usr/bin/msbuild --replace /usr/bin/mono ${mono}/bin/mono
Copy link
Member

Choose a reason for hiding this comment

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

FWIW you can do multiple replaces in one substituteInPlace.

Copy link
Member Author

Choose a reason for hiding this comment

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

How?

sha256 = "0jgw80p9dr9mi40i8vy22y3b5d4byr26s9gvs5xjjgdzqdrlj9fm";
};

buildInputs = [ dpkg ];
Copy link
Member

Choose a reason for hiding this comment

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

This Should go in nativeBuildInputs.

Copy link
Member Author

Choose a reason for hiding this comment

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

Okay.

@leo60228
Copy link
Member Author

I made those changes, but couldn't test them because I haven't built my patched Mono off master.

@leo60228
Copy link
Member Author

It works. I don't know how to remove the "Merge branch 'master' into master" commit, GitHub created it (from the web UI). This would be really nice for 18.09, it would drastically improve .NET support.

@leo60228
Copy link
Member Author

@samueldr (pinging because of Discourse post) This would be nice for 18.09. buildDotnetPackage is not updated because that would rebuild all .NET packages, and there may be package breakages from the new build system, but this would still be nice for local development of .NET apps. Many frameworks are beginning to require MSBuild on all platforms.

@samueldr
Copy link
Member

samueldr commented Aug 31, 2018

👋 hi! Thanks for your contribution.

I have checked the PR as best as I could... but lacking the experience and knowledge with msbuild I cannot test the changes thoroughly. Could you point me towards a project that needs msbuild to build? Hopefully one that you have tested and is working with msbuild in nixpkgs?

I have looked online for a "hello world" project for msbuild, not really confident this one strains msbuild... I'm saying this because it works without error when removing your fix to pkgs/development/compilers/mono/generic-cmake.nix. (I'm validating the fix is needed).


Mono Maintainers, assemble! @thoughtpolice @obadz @vrthra you are listed, any one of you could take a peek and either yay or nay?

@leo60228
Copy link
Member Author

leo60228 commented Aug 31, 2018

The problem was actually with C# compilation. The last line of this example was what needed the fix, and it should be a simple testcase (note that you must pass the Gtk option on line 3 for Linux support): https://github.com/picoe/Eto/wiki/Quick-Start#dotnet-new

The Eto.Forms tests will likely trigger the bug, but I am unable to check right now. If necessary, I can, though. https://github.com/picoe/Eto/tree/master/test/Eto.Test

For a project I have worked on, but not tested with MSBuild (though logic dictates that it "should" encounter the bug), see: https://github.com/EverestAPI/HookedMethod

@leo60228
Copy link
Member Author

Also, xbuild implements a subset of MSBuild. As it was deprecated a few years ago, the subset of current MSBuild features is much smaller than it used to be; the project format was completely changed to be (more) human-editable a little while ago, and xbuild never added support.

@samueldr
Copy link
Member

samueldr commented Sep 2, 2018

Hi,

Tried to stumble my way through the links you sent... I was pretty unsuccessful! This does not mean this PR is wrong... I still don't know how to verify, especially verify the change for the copied Microsoft.Common.props file.

While in a checkout of this PR, I entered a shell:

 $ nix-shell -I nixpkgs=$PWD -p msbuild dotnet-sdk dotnetPackages.Nuget

Then, I tried the instructions in the Eto quickstart (dotnet new). This is where I'm uncertain of the results.

✂️ elided due to length
[nix-shell:~/tmp/nixpkgs/nixpkgs-PR43680]$ mkdir tmp
[nix-shell:~/tmp/nixpkgs/nixpkgs-PR43680]$ cd tmp/
[nix-shell:~/.../nixpkgs-PR43680/tmp]$ dotnet new -i "Eto.Forms.Templates::*"
 [...]
[nix-shell:~/.../nixpkgs-PR43680/tmp]$ dotnet new etoapp -sln -xm -m xaml
The template "Eto Application" was created successfully.
[nix-shell:~/.../nixpkgs-PR43680/tmp]$ nuget restore
MSBuild auto-detection: using msbuild version '4.0' from '/nix/store/nlazlrj5wnb52mh52zczb8gznn7mjl3v-mono-5.8.0.108/lib/mono/4.5'.


[nix-shell:~/.../nixpkgs-PR43680/tmp]$ msbuild
Microsoft (R) Build Engine version 15.6.0.0 ( Thu May 10 14:00:26 UTC 2018) for Mono
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 2018-09-01 9:42:28 PM.
Project "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
  Building solution configuration "Debug|Any CPU".
Project "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.sln" (1) is building "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/tmp.csproj" (2) on node 1 (default targets).
PrepareForBuild:
  Creating directory "bin/Debug/netstandard1.6/".
  Creating directory "obj/Debug/netstandard1.6/".
/nix/store/fx0cv0xr53m4kxw1fx2hh4k73qqvww71-msbuild-15.6/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(327,5): error : Assets file '/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/tmp.csproj]
  Build continuing because "ContinueOnError" on the task "ReportAssetsLogMessages" is set to "ErrorAndContinue".
/nix/store/fx0cv0xr53m4kxw1fx2hh4k73qqvww71-msbuild-15.6/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(167,5): error : Assets file '/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/tmp.csproj]
Done Building Project "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/tmp.csproj" (default targets) -- FAILED.
Project "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.sln" (1) is building "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.Desktop/tmp.Desktop.csproj" (3) on node 1 (default targets).
PrepareForBuild:
  Creating directory "bin/Debug/net461/".
  Creating directory "obj/Debug/net461/".
Done Building Project "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.Desktop/tmp.Desktop.csproj" (default targets) -- FAILED.
Project "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.sln" (1) is building "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.XamMac/tmp.XamMac.csproj" (4) on node 1 (default targets).
/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.XamMac/tmp.XamMac.csproj(92,3): error MSB4019: The imported project "/nix/store/nlazlrj5wnb52mh52zczb8gznn7mjl3v-mono-5.8.0.108/lib/mono/xbuild/Xamarin/Mac/Xamarin.Mac.CSharp.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
Done Building Project "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.XamMac/tmp.XamMac.csproj" (default targets) -- FAILED.
Done Building Project "/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.sln" (default targets) -- FAILED.
Build FAILED.
"/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.sln" (default target) (1) ->
"/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/tmp.csproj" (default target) (2) ->
(ReportAssetsLogMessages target) ->
  /nix/store/fx0cv0xr53m4kxw1fx2hh4k73qqvww71-msbuild-15.6/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(327,5): error : Assets file '/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/tmp.csproj]
"/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.sln" (default target) (1) ->
"/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/tmp.csproj" (default target) (2) ->
(RunResolvePackageDependencies target) ->
  /nix/store/fx0cv0xr53m4kxw1fx2hh4k73qqvww71-msbuild-15.6/usr/lib/mono/msbuild/15.0/bin/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(167,5): error : Assets file '/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp/tmp.csproj]
"/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.sln" (default target) (1) ->
"/Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.XamMac/tmp.XamMac.csproj" (default target) (4) ->
  /Users/samuel/tmp/nixpkgs/nixpkgs-PR43680/tmp/tmp.XamMac/tmp.XamMac.csproj(92,3): error MSB4019: The imported project "/nix/store/nlazlrj5wnb52mh52zczb8gznn7mjl3v-mono-5.8.0.108/lib/mono/xbuild/Xamarin/Mac/Xamarin.Mac.CSharp.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
    0 Warning(s)
    3 Error(s)
Time Elapsed 00:00:00.93

There are three errors. I do not know the actual expected result, as I do not know about either .NET or Eto. This could be expected in a new project, but I'm thinking this shouldn't happen.

I'll ping again the mono maintainers people @thoughtpolice @obadz @vrthra for help in reviewing.

@leo60228 if you have an example transcript of what you're doing to verify, and lightly explain the steps, I could also boost my confidence in this PR following it.

@leo60228
Copy link
Member Author

leo60228 commented Sep 2, 2018

This is weird. Can you try running dotnet restore? The Xamarin.Mac errors are expected, they require macOS. To run the compiled program on Linux, I believe you'll have to pass -gtk to dotnet new, I don't have access to NixOS to test (graphics drivers decided to break separately on all my computers, have just been using Windows because I don't have time to debug right now).

@samueldr
Copy link
Member

samueldr commented Sep 2, 2018

Ah, just dropping -xm seems to do the trick... Though it compiles I don't really know what it is I compiled and how to run it 😃.

I have confirmed that your added file does (seemingly) fix an issue. This was used to verify:

 $ mkdir -p tmp
 $ cd tmp
 $ dotnet new etoapp -sln -m xaml
 $ dotnet restore
 $ msbuild

With and without the added line to generic-cmake.


EDIT: How was the fix decided upon? Was this a recommendation from some other issue? (I'd like to keep a trail leading to an upstream issue, if there is one.)

cp -r . $out
rm $out/env-vars
cp -r ${mono}/lib/mono/msbuild/15.0/bin/Roslyn $out/usr/lib/mono/msbuild/15.0/bin/Roslyn
cp -r ${mono}/lib/mono/4.5 $out/usr/lib/mono/4.5
Copy link
Member

Choose a reason for hiding this comment

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

Why is it necessary to copy stuff from mono? Wouldn't it be better to use the existing files from mono? This adds around 100MB of duplicated stuff.

substituteInPlace usr/bin/msbuild --replace /usr/bin/mono ${mono}/bin/mono --replace /usr/lib/mono/msbuild/15.0/bin/MSBuild.dll '$(dirname $0)/../usr/lib/mono/msbuild/15.0/bin/MSBuild.dll'
mv usr/bin .
cp -r . $out
rm $out/env-vars
Copy link
Member

Choose a reason for hiding this comment

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

Extracting to a subdirectory instead of into cwd wouldn't bring in the env-vars file.

A simple fix, using a subshell, which doesn't change your commands too much

diff --git a/pkgs/development/tools/build-managers/msbuild/default.nix b/pkgs/development/tools/build-managers/msbuild/default.nix
index 08931b2edfc..28d42fa07da 100644
--- a/pkgs/development/tools/build-managers/msbuild/default.nix
+++ b/pkgs/development/tools/build-managers/msbuild/default.nix
@@ -14,12 +14,14 @@ stdenv.mkDerivation rec {
   dontConfigure = true;
   dontBuild = true;
 
-  unpackPhase = "dpkg-deb -x $src .";
+  unpackPhase = "dpkg-deb -x $src build";
   installPhase = "
+    (
+    cd build
     substituteInPlace usr/bin/msbuild --replace /usr/bin/mono ${mono}/bin/mono --replace /usr/lib/mono/msbuild/15.0/bin/MSBuild.dll '$(dirname $0)/../usr/lib/mono/msbuild/15.0/bin/MSBuild.dll'
     mv usr/bin .
-    cp -r . $out
-    rm $out/env-vars
+    )
+    cp -r build/ $out
     cp -r ${mono}/lib/mono/msbuild/15.0/bin/Roslyn $out/usr/lib/mono/msbuild/15.0/bin/Roslyn
     cp -r ${mono}/lib/mono/4.5 $out/usr/lib/mono/4.5
   ";

@leo60228
Copy link
Member Author

leo60228 commented Sep 2, 2018

I can't currently fix this, I won't have access to any NixOS system until Monday night. Can you check if those work? I'm fine with you adding them to my commit.

@Legogris
Copy link

I am unfortunately unable to help out with this, but this would be fantastic to have merged (since msbuild is required to be able to use C# support in VScode I imagine this would help adoption as well).

2 similar comments
@Legogris
Copy link

I am unfortunately unable to help out with this, but this would be fantastic to have merged (since msbuild is required to be able to use C# support in VScode I imagine this would help adoption as well).

@Legogris
Copy link

I am unfortunately unable to help out with this, but this would be fantastic to have merged (since msbuild is required to be able to use C# support in VScode I imagine this would help adoption as well).

@leo60228
Copy link
Member Author

I deleted and recreated my fork, which appears to have broken the PR. Recreating...

@billksun
Copy link
Contributor

billksun commented Aug 2, 2019

@jdanekrh I'm actually blocked by this error message on vscode:

Microsoft.Build.Exceptions.InvalidProjectFileException: The imported project "/nix/store/2acc44zvbm4j9dbw2l302sqp8mramda1-mono-5.20.1.27/lib/mono/xbuild/15.0/Microsoft.Common.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  /nix/store/ibsaidfbhyw1nwwggh6slqh6zqc2dfmx-dotnet-sdk-2.2.203/sdk/2.2.203/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props

Where the directory 15.0 doesn't exist in my mono installation path. I am assuming that msbuild 15.x would solve my problem, but I could be wrong, since the path is referencing xbuild instead.

Here's the same issue report in OmniSharp: dotnet/vscode-csharp#3180. The workaround reported there is to directly edit the Sdk.props file and hard code the file path.

@jirkadanek jirkadanek mentioned this pull request Aug 5, 2019
10 tasks
@jirkadanek
Copy link
Member

@billksun Let me try to reproduce that for myself. So far, i got this

$ dotnet new -i "GtkSharp.Template.CSharp"
Getting ready...
  Restore completed in 1.79 sec for /home/jdanek/.templateengine/dotnetcli/v2.2.401/scratch/restore.csproj.
[...]
$ dotnet new gtkapp
The template "Gtk Application" was created successfully.
$ ls                 
MainWindow.cs  MainWindow.glade  Program.cs  project.csproj
$ dotnet run                                                                  

Unhandled Exception: System.TypeInitializationException: The type initializer for 'Gtk.Application' threw an exception. ---> System.DllNotFoundException: Gtk
   at GLibrary.Load(Library library)
   at Gtk.Application..cctor()
   --- End of inner exception stack trace ---
   at Gtk.Application.Init()
   at project.Program.Main(String[] args) in /home/jdanek/project/Program.cs:line 11
dotnet run  4.42s user 0.76s system 68% cpu 7.542 total

I run vscode with code ., confirm prompt to install omnisharp, I get your OmniSharp error. OK.

@jirkadanek
Copy link
Member

There is msbuild, mono, and dotnet-sdk as separate packages, that nevertheless interact in some ways both at build time and then at runtime, maybe even circularly. It might be hard to untangle this when these packages cannot share files in a FHS filesystem. I don't know enough about .net to be much help there.

Or maybe could be sufficient to package omnisharp for nix and fix things there?

My #66134 does not seem to help with this omnisharp issue, btw.

@jirkadanek
Copy link
Member

I think I got it. Give OmniSharp the MSBuildExtensionsPath from #66134. In the example project from above

% cat omnisharp.json 
{
    "MsBuild": {
        "MSBuildExtensionsPath": "/nix/store/sn4h4a3qbp11yng2621yqzk16blvn6bw-msbuild-16.3+xamarinxplat.2019.07.26.14.57/lib/mono/xbuild"
    }
}

kill vscode and rerun code .

OmniSharp is not complaining with errors on startup any more, and auto-completion in C# is working.

@billksun
Copy link
Contributor

@jdanekrh, this doesn't seem to work for me. Although I put omnisharp.json file in my project root directory and used the path for my mono installation /nix/store/2acc44zvbm4j9dbw2l302sqp8mramda1-mono-5.20.1.27/lib/mono/xbuild instead, I got exactly the same error message.

So it seems that omnisharp is not picking up on the config file.

@jirkadanek
Copy link
Member

@billksun I only tried this with msbuild 16.3 from #66134. Could you wait for that PR to be merged, and try again with that?

@billksun
Copy link
Contributor

@jdanekrh, will do

@billksun
Copy link
Contributor

billksun commented Aug 29, 2019

@jdanekrh, using msbuild from #66134 works!
Thanks!

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

Successfully merging this pull request may close these issues.

None yet

7 participants