-
Notifications
You must be signed in to change notification settings - Fork 840
consume dotnet arcade sdk #6061
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
Conversation
01f9c28 to
67f332d
Compare
| build.cmd vs -- build the Visual F# IDE Tools in Release configuration (see below) | ||
| build.cmd vs debug -- build the Visual F# IDE Tools in Debug configuration (see below) | ||
| build.cmd vs test -- build Visual F# IDE Tools, run all tests (see below) | ||
| Build.cmd -- build all F# components under the default configuration (Debug) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor nit: why the uppercase Build.cmd? It looks really odd.
|
|
||
| All test options: | ||
|
|
||
| -testDesktop -- test all net46 target frameworks |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor nit: the capitalization in these flags looks odd - Fcs? we never use that. Just stick to lowercase for flags
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I use mixed case to try to improve readability, but Powershell is case insensitive when parsing switches so you can supply either at the command line.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, then let's just change the help. You're sort of right that it improves readability, but the whole world just expects command line flags to be lower case, and we don't want to look odd :)
| @@ -0,0 +1,286 @@ | |||
| # | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Feels really odd to have powershell in the repo after all this time, but it's simple enough and great to see the build.cmd go
|
What is the replacement for which just builds thanks |
|
Short answer: that's not supported by Arcade; just run You could try, however, to instead directly build FSharp.sln which is what's used for cross-plat work:
|
|
Ah ok, thanks. Are the .NET Framework binaries ngen'd? I see this which looks dodgy: |
|
Actually, you can do that. You can create a solution that only contains the projects you want to build and then build that solution. Roslyn does it for Compilers.sln - these are just compiler projects that build xplat. I guess |
|
Also, See e.g. https://github.com/dotnet/roslyn/blob/master/eng/build.ps1#L213 |
|
It looks like this works well enough for an incremental build of the compiler: I'm a little confused why this doesn't work: The problem is that the build attempts to use |
|
Hey On a similar topic, is there any way to skip the restore step? |
|
@brettfo Could you please explain why all the build stuff is now placed in the |
Ignore this, it looks like projects weren't restored fully |
|
We are aligning our build to match the builds of the other dotnet repos. This has important code flow benefits for us. Following this insertion of F# builds into Visual Studio and the dotnet sdk will be fully automatic. Previously they required us to perform a manual insertion into Visual Studio, and a separate manual insertion into the various dotnet Cli versions. As far as the directory called eng the guys who designed arcade picked that name. You will note that Roslyn also an eng folder with similar contents, as does coreclr and corefx, and I expect the cli and msbuild projects too.. Over time we will add back ease of use switches to build.cmd. But just getting to the current position was an enormous engineering lift. The current build is infinitely better than the build we had a year ago. It seems quite clear that we are going to need an equivalent to:
I use variations of the above daily and so miss them immensely, already. |
"eng" is for "engineering" I think I think this is following the same pattern as Roslyn now - this is part of a bigger effort to share engineering practice with the Roslyn team. |
|
@dsyme |
|
@KevinRansom @dsyme Thank you for the explanation. |
|
@auduchinok --- I prefer your explanation,. |
|
|
|
@dsyme I opted to restore by default (see |
|
|
|
Added #6371 for |

This is required as we move forward for divisional purposes.
Once this is in the basic method of building/testing this repo on Windows will be:
Build.cmdoptionally with-configuration Releasebuilds everything. If-configurationis not specified,Debugis default.Build.cmd -testDesktopbuild everything and run the desktop test suite.On Linux:
./build.shoptionally with--configuration Releasebuilds everything. If--configurationis not specified,Debugis default../build.sh --testcoreclrbuild everything and run the CoreCLR test suite.Note that building a subset of the code with things like
build.cmd vs,build.cmd net40, etc. is no longer a scenario;Build.cmdwill always build every supported project on that platform, although you can build individual projects as expected, e.g.:msbuild src\fsharp\FSharp.Core\FSharp.Core.fsproj.For all options see
eng/Build.ps1oreng/build.sh.