Dazed and confused: The state of the Core
It feels like I took my eyes off the ball for a second, and suddenly I'm in an entirely new game.
We have been working with CoreCLR (the RC1 release from last year), and have been grateful to be able to run our software oh so easily on both Windows and Linux (heaven and earth difference from trying to run on Mono).
However, stuff changed. I know about the delay in shipping CoreCLR (and I'm whole heartedly approve it, we need something stable), and I have some rough idea about where the general direction is. But what is the current state? No idea.
Googling this find me fragments of information, and not at all useful.
The decision to go with NET Standard instead of the bazillion individual packages is something that I applaud. It should make our life easier. Except that when I tried that I run into a whole bunch of issues that caused me to stop trying for a time.
Basically, here is what I need to know is whatever there currently a way to get a CoreCLR (dotnet cli, whatever the current term is) on the latest framework / libraries that would actually make sense.
In this context, make sense means that I get to do things like use Visual Studio normally (more or less) to build / debug my application. I'm fine with quite a lot of manual / scripts work, but I really like being able to debug. The nice thing about the RC1 bits is that it mostly works, you can debug it, profilers work, the whole thing. It is different than running on the standard framework, because some things don't work, but that is something that we can work with. (In particular, no easy way to get pdbs for stuff like profiling is really annoying).
When I read Hanselman's post about the dotnet cli, I was quite excited. It made sense. But now I feel that instead of having all the usual power that I'm used to have plus all the conveyance of just opening a shell and start pounding code, it is the other way around. It is somewhat like being back working in perl. If stuff works, great, but if it isn't, you might as well just start from scratch.
I'm talking about the build system, the dependencies, "how do I run this?", "how do I debug this?" questions.
What makes this worse is that there doesn't appear to be a roadmap that we can peek at (not that I could find). I can see some discussions in chats and in issues, but there is no real "this is where we are going" sense.
To explain some of my frustration, let me take my simplest project, which current contains the following details:
"frameworks": { "dnxcore50": { "dependencies": { "Microsoft.CSharp": "4.0.1-beta-23516", "System.Collections.Concurrent": "4.0.11-beta-23516", "System.Diagnostics.Debug": "4.0.11-beta-23516", "System.Diagnostics.Contracts": "4.0.1-beta-23516", "System.Runtime.InteropServices.RuntimeInformation": "4.0.0-beta-23516", "Microsoft.AspNet.Hosting": "1.0.0-rc1-final", "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", "Microsoft.AspNet.WebSockets.Server": "1.0.0-rc1-final", "NLog": "4.4.0-*" } } }, "dependencies": { }
Now, I want to move this core from DNX RC1 to the latest release. So this probably will look like this:
"frameworks": { "dnxcore50": { "dependencies": { "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", "Microsoft.AspNet.WebSockets.Server": "1.0.0-rc1-final", "NLog": "4.4.0-*" } } }, "dependencies": { "NETStandard.Library": "1.0.0-rc3-23909" },
I think, at least, that this is what it is supposed to be. Everything that I expect to be in the standard library to be in the standard library, and the rest I still need to reference. Now we get to the fun part. Using "dotnet restore / dotnet build" it successfully compiles. But using "dnu restore / dnu build" it does not.
I think that this relates to the magic incantation of the specific nuget feeds that it checks, but I'm not sure. Not being able to also compile that on DNX means that I can't use Visual Studio to actually work on this project.
And a more complex project just doesn't work.
So I'm lost, and feeling quite stupid at this point. And more than a bit frustrated.
Comments
new technology, its always not perfect at the beginning. I would even say that software is never perfect and always requires maintenance and improvements. that's will be solved in the near future. I think the direction is good and in 3-5 years, when the common libraries will fully ported to clr, we'll see many projects in the clr. I would even bet that the only projects will be left is a big legacy ones, (same as asp classic for today). so, its better to start early and get things to work as soon as possible so when the clr is out (expected in late 2016 or Q1 2017) you'll use the powerful of this stack. I like the concept to be able to update specific parts of the framework, in this way you can push upgrades much faster, but still I have to admit, sometimes I'm also a bit frustrated that its not production ready yet, and missing a lot of features. (even a small library such as dapper is not exists yet), but there is no doubt it will be there. meanwhile, all we can do is just to have some patience.
@Uri Dapper is ready https://www.nuget.org/packages/Dapper/1.50.0-beta9
I think the issue you are having is you are trying to do stuff before the tooling and final decisions have been made. RC1 generally does work well with VS etc, however RC2 will move to dotnet cli, the current VS tooling is not ready for that. The monikers seems to be changing quite frequently, dnxcore50 is being replaced. So with all these things being combined it is painful but lets not forget that this is beta in essence, lets ignore the RC stuff so stuff is going to break and tooling wont be working etc etc.
Here are some milestones https://github.com/dotnet/corefx/milestones and also you can watch the community standups http://live.asp.net
As Jonathan Channon has already mentioned the VS tooling will only work with RC1 and you'll have to wait for RC2 to drop to get this running in VS2K15 proper. You can, however, debug in VS Code but VSC is not VS.
FWIW I've created a gist with a modified version of your project.json that will restore and build on the latest dotnet CLI (1.0.0-rc2-002347 as of this post). You can see it here: https://gist.github.com/miguellira/fbf026e933a4ef2b1d240579331240fa
That said, there is so much churn right now that unless you're up for the challenge, you're better off waiting until RC2 drops, VS tooling is updated, TFMs are well defined and documented, etc.
BTW, big fan of all your work. Cheers!
I have to admit, MSFT made a total mess of this. I think they may have jumped the gun on announcing the whole thing. RC1 was great, except DNX/CLI didn't talk to each other. To make matters worse, the marketing behind it has been confusing. First it was ASP.NET 5. Then its ASP.NET Core, but it works on .NET Core and .NET full framework. Then they announce last week (after announcing differently at //build) that .NET Native won't ship with .NET Core 1.0 and they're rethinking the whole native compilation thing. Except Red Hat does their announcement today for support of .NET on RHEL and did a webinar in which they did announce native compilation would be in 1.0 since it's one of the killer features of Core. TFM/NETStandard just takes it to a whole 'nother level of confusion. I can't even comprehend the Visual Studio 2015 and Visual Studio "15" fiasco.
Don't get me wrong, I like the announcements. But we need execution. At //build/ they were hinting at shipping RC2 in April. However if you're following the nightlies they're nowhere near ready. If you're beginning a new multi-year project right now, it's very hard to make a commitment on .NET Core, and there isn't even any kind of roadmap on how they will clear up the confusion.
Sharky16, I think that this is pretty much spot on, and a major cause for concern. I want to trust them to get this right, but not having a clear idea about what is going on, and what we can expect is pretty bad
well, I don't know if this will make you feel any better but I feel exactly as you, stupid and lost.
I decided to stay away from it until it gets properly released, not RC1 or 2 or whatever other number they will come up with. I like Microsoft and I like their new attitude but I cannot commit to using this new framework when it's such a big change, it's not complete and not even stable yet. I am sure they'll get there though, they have a lot of very smart people working on it.
Although it's been bumpy - and even moreso as of late - I, for one, have been enjoying the ride. Maybe it's because of my exposure to client side frameworks like Ember, Angular, React etc. where change is the norm and things are always in flux. Or maybe it's because the bits that I've seen so far have such a good outlook. Or maybe I'm simply a masachist and the pain keeps me engaged. Whatever the reason, I definitely see the glass half full and I'm looking forward to a post RC2 world.
RC1 was a mis-nomer, should have been beta or preview - they screwed that up (and they admit it). dnx was killed as it didn't align ASP.NET/server vs other scenarios. Guidance right now is to wait for RC2 for all the pieces to come together, and I applaud Scott Hunter/Damien/Rich for not prematurely committing to a date until they're ready to show the new cards and tooling all working smoothly. There was a recent ASP.NET standup where they actually walked through updating to the latest bits (nightly builds), and showed how it's coming together. The ASP.NET blog is not updated nearly enough, but at least they're trying... .NET core folks need to do more here IMO.
Here's some new tidbits today from Scott Hanselman (again from the ASP.NET side): http://www.hanselman.com/blog/AnUpdateOnASPNETCore10RC2.aspx
Quoting from the end: "The new .NET CLI (again, replacing DNX) will be the most de-stabilizing change in RC2. This is a good intro to where things are headed https://vimeo.com/153212604. There's been tons of changes since then but it's still a good overview."
On Tuesday's standup, they demoed again how to get up and running: https://youtu.be/fkzeOqSNtwQ?t=14m17s
So is it a correct assumption that development targeting ASP.NET Core has halted for the time being?
roydukkey, Nope, we are still going forward on that
Comment preview