
.NET Core Tooling in Visual Studio “15” - hitr
https://blogs.msdn.microsoft.com/dotnet/2016/10/19/net-core-tooling-in-visual-studio-15/
======
wmccullough
Lot of people in this thread crapping on Microsoft, but that's not to say that
there's not some valid criticism here.

Microsoft is trying to unscrew the single platform nature of dotnet. This is
going to take some time. They are having to break bones to set them correctly.
Let's not pretend that any of us devs have never inherited an old project that
we had to fix, and left a wake of destruction.

That said, shame on them for not listening to the community more. Many, many
people on Github were very vocal about the project formats and the build
system, and it was obvious that Microsoft made up it's mind.

While I'm a huge fan of dotnet, I also have to chastise Microsoft here. You
can't leap to open source and then crap on your contributors when they are
telling you that you're making a blind decision. If it was the one contrarian
person that always complains about everything, I could see it, but it wasn't.
Very notable members in the dotnet ecosystem raised the warning flag on this.

I for one kept with the mindset of not building anything for production with
their v1 release. This is an old rule. By v2, I'm betting this thing will be
awesome. Hell it already is. Let's not throw the baby out with the bathwater.

~~~
romanovcode
Well, in my opinion they actually do need to have strong opinions because it's
not "just another node framework". They want to target enterprise sooner than
later and it doesn't hurt that you have huge megacorp backing the product, of
course it also makes their saying much more weightful.

Also, I don't see the problem with the changes, they announced that they are
going away from JSON to XML like 3 months ago and it's not like this is news.

Also, I like XML much better for project files because IMO it's much more
readable.

~~~
vmarsy
I like the XML format better too. It's also easier* to parse if you start
using XPath, if for any reasons you need to quickly read/write some of the
values.

* Except when a default namespace is involved, then XPath expressions get more complicated. But according to that blog, it looks like the VS team ditched the default _xmlns= "[http://schemas.microsoft.com/developer/msbuild/2003"](http://schemas.microsoft.com/developer/msbuild/2003") _ namespace in the <Project> root :)

------
ed_blackburn
Stop. Before moaning about json vs xml consider that the sln file is a non-
stand external dsl that's existed since the early nineties. Now that's
something I'd like to see being replaced.

~~~
stinos
This. Years ago I already heard 'there are plans to convert sln to msbuild'
and I've been waiting since, to no avail.

------
coolgoose
I might be the odd one out since I don't find the XML format that bad.

A bit sad when you can't add comments in json like formats. (nobody really
uses json5)

~~~
elcct
Well, you can do something like:

    
    
      {
        "comment-version": "Tells the version of the file",
        "version": "1.0.0-*",
        "buildOptions": {
          "comment-debugType": "What kind of debug type would you like?",
          "debugType": "portable",
          "emitEntryPoint": true
        }
      }
    

:D

~~~
snarfy
Those aren't comments. That's all live data, sent over the wire using up
bandwidth and resources. It probably wouldn't matter for this project file,
but you really shouldn't do that in json.

~~~
topbanana
XML comments get sent across the wire too

~~~
jsingleton
Correct, but I believe what they may mean is that the data will be parsed at
an attempt to deserialize it. This may have unintended side-effects. For
example, you have to make sure you don't want to add a property to your POCO
with that name now.

The wire isn't that relevant here. This is about a config file, not an API.
Size isn't too important.

~~~
hood_syntax
This can be solved by sanitizing it prior to parsing and removing any property
that starts with 'comment'. I know it's not a pretty solution, but it works.
It's an additional step, but it might be preferred by some people when it
means working with a data format they prefer.

~~~
jsingleton
Sounds like a great way to get a bug report in a few year time (once you've
forgotten about this feature) along the lines of: Property names starting with
"comment" fail to deserialize. :)

~~~
hood_syntax
Hah, true...

------
joesb
You can see the syntax below to specify the set of targets that you want to
build for, as a semicolon-separated list.

<TargetFrameworks>netstandard16;net452</TargetFrameworks>

Fresh release of XML-based config file that already uses single string field
for array?

~~~
naasking
Yeah, totally didn't get that either. I suspect it's for backwards
compatibility with older Visual Studio releases.

~~~
wvenable
No, this is pretty much all new. But there are plenty of places in the tooling
besides the project file where you would list off the target frameworks (e.g.
nuget). I assume they're all a semi-colon separated list thus making this
consistent across everything.

------
jsingleton
Glad to see a more unified approach, particularly with .NET Standard and
Xamarin [0]. I've been experimenting with Xamarin.Forms recently and put
together a little mobile game. There are a couple of blog posts coming on
that, including the whole shared projects / PCLs / .NET Standard thing.

[0]: [https://unop.uk/net-core-1-0-1-and-net-standard](https://unop.uk/net-
core-1-0-1-and-net-standard)

------
hitr
Hope this csproj is final breaking change on this!.I am not sure if any other
project has gone through so much of changes from the initial release. It was
called kvm,kre,klr [1]-> dnx,dnu,dnvm [2] ->coreclr,corefx ->changes to
project.json to csproj system . I have started writing a gitbook[3] on asp.net
core when this was in the RC phase but everything I learned or wrote had to be
rewritten .I did not merge my dev branch to master for whatever new I was
writing and eventually I stopped.I am wondering what would happen to all the
books currently published where most of the book will be referring
project.json

[1][https://weblogs.asp.net/imranbaloch/k-kvm-kpm-klr-kre-in-
asp...](https://weblogs.asp.net/imranbaloch/k-kvm-kpm-klr-kre-in-asp-net-
vnext)

[2][https://blogs.msdn.microsoft.com/webtopics/2016/01/14/gettin...](https://blogs.msdn.microsoft.com/webtopics/2016/01/14/getting-
to-the-crux-of-dnvm-dnu-and-dnx-in-asp-net-5/)

[3][https://www.gitbook.com/book/openlearningportal/all-about-
as...](https://www.gitbook.com/book/openlearningportal/all-about-asp-net-
core/details)

------
snarfy
I'm sad I spent any time learning the project.json format. I wish I could
dotnet migrate those brain cells back and free up some memory.

------
nowprovision
What's the story with fsproj ?

------
romanovcode
Very glad they ditched json. It was completely unreadable.

------
oldmanhorton
I am currently working on two dotnet core projects (both ASP.NET Core) and my
only complaint has been the tooling. Visual Studio talking in terms of
solutions and the dotnet cli talking in terms of projects means that I have
`launch.{sh|ps1} scripts for those not using VS and launchOptions.json/the sln
file for those working in VS. It feels like something that should have been
sorted out, even if it took a new `dotnet startup` command to emulate Visual
Studio's StartUp projects. Entity Framework Core tooling, especially with
SQLite, has also caused some issues around migration handling (in that there
basically is no migration handling for sqlite, causing you to write a custom
script to nuke the database and migrations every time you make a change).

The platform itself, however, is fantastic.

------
wilde
So...when do folks think it will be safe to use this? Often 1.0 is reserved
for "we'll try to make less painful interface breaking changes after this
release". But if this is any indication, we're still a ways off from API
stability.

~~~
manigandham
This doesnt change anything with the API and NetStandard 2.0 coming soon will
add back several missing APIs to .NET Core that are in the .NET full
framework.

.NET Core is safe to use right now, it's the IDE and command line utilities
getting finalized for 1.0 release (of the tooling) so that it's easier to work
with.

------
adrianlmm
Does this mean that now you need MSBuild in .NET Core? is it ported to Linux?,
how does it work?

------
dustinmoris
How come this story could be reposted so quickly when it has been submitted
already 11 hours ago?
[https://news.ycombinator.com/item?id=12747592](https://news.ycombinator.com/item?id=12747592)

~~~
Tomte
HN software auto-resubmits some stories. Additionally, HN mods manually
resubmit stories they feel have potential for a fruitful discussion.

~~~
dustinmoris
Ok thank you, but that doesn't seem to be the case here, because this doesn't
appear to be auto-posted by some HN bot? Normally when I try to post an
article that has already been posted in the last 24hours then Hacker News
redirects me to the original post, so I was surprised how this could be
duplicated so quickly after the original post. Also why does my question get
down voted? Was I wrong to ask that question or do people feel offended by my
question?

~~~
Tomte
Those auto-reposted submissions look like the original submitter resubmitted
them. You can usually see that their are conflicting time-stamps, some pages
show the original time, some the resubmission time.

I don't know if it was the case here. It may simply be that it was a normal
submission and the URL duplicate detection didn't work. It's hard to do that,
if you're too strict you probably get a lot of false positives.

Questioning downvotes never leads to any real answer, so it's useless at best.
And it invites further downvotes, because it's unproductive (and can seem
whiny – not in your case, though).

I am regularly astounded which of my comments get many downvotes, and also
which of them get many upvotes. Also sometimes comments start with -4 and get
to +8 or vice versa. It's best to shrug it off entirely.

------
DSteinmann
What a disaster. The tail wagged the dog in the .NET Core team. Every step of
the way it became clearer that this was a pet project of some ivory-tower
programmers and that we would be left to patch together this mess. Try adding
a .NET Core project on your build server. You'll hate yourself by the time you
get it building.

~~~
cm2187
That's one thing I don't understand with .net core. You deploy the whole .net
framework along your code which then becomes static. And this is targeted at
web applications primarily.

What about security vulnerabilities? Unless the developers redeploy the
application we will be left with an unpatched .net stack and unpatched web
server?

How is that a good idea? In an ideal world there would be an active dev team
busy redeploying and patching every day behind each website. But people who
think we live in this world haven't really followed the pretty much constant
stream of news about major breaches because of unpatched versions of software
being used everywhere.

Or am I missing something?

~~~
colemickens
My dotnet core containers are rebuilt from scratch and redeployed every 20
minutes or so. If there's a security bug in the base OS layer of my container
or in the .NET runtime, I'll have it in less than a half hour.

Not too hard, if you have some standard practices in place.

~~~
colemickens
I always enjoy wondering what sort of person downvotes a comment like this. I
can't help but feel it's someone with shame/guilt for not having CI/CD in
place.

But yeah, if that's too much to ask for, just don't ship the framework in your
project. You can still have it installed as a system package. But to be frank,
it's nearly the same problem, just in a different spot.

~~~
cm2187
The .net framework of the OS gets updated with Windows Update automatically.
It is not the same problem at all.

I obviously didn't downvote but I do understand the downvotes: it is
unrealistic to expect every website to be actively maintained forever. I am
sure he deploys a new version every 20 minutes of his current project. I would
be curious to know how many versions a year he deploys of the projects on
which he worked 5 or 7 years ago and from which he moved on.

The world is filled with legacy applications, libraries and websites.
Pretending that the code we write today will always be actively maintained and
supported is just unrealistic.

------
hacker_9
The .csproj msbuild file is here to stay? really? Why are we having to fit
programming a build system around an archaic xml declarative language? The
.csproj is the single worst point of the visual studio experience. Terrible
format, editing experience, having to reload, having to copy paste GUIDs,
manually lookup .target files ugh the whole thing is horrible.

~~~
kierenj
If you read the article, you'll see many of the things you refer to aren't
applicable

------
Longhanks
Coming from a Linux/macOS background, this article is really hard to read. So
many .Net-Buzzword things, MSBuild, project.json, csproj, sln... I'd really
appreciate if they streamlined how to get started with C# cross platform.

~~~
manigandham
This is obviously not the article for how to get started with C# cross-
platform.

There are plenty of great articles for that already that you can search for,
or just start at the official site:

[https://www.microsoft.com/net/core/platform](https://www.microsoft.com/net/core/platform)

[https://docs.microsoft.com/en-
us/dotnet/articles/core/gettin...](https://docs.microsoft.com/en-
us/dotnet/articles/core/getting-started)

