In VS2015 > New Project > .Net Core, there is a template for "Class Library (.NET Core)"
It wasn't until I tried to reference this library in a .NET Core Web API program, that I realized that the Class Library template is referencing .NETStandard v1.6. And my .NET Core API porject won't take it as a reference. I was trying to avoid building the library as a nuget package.
Any ideas on why a Core template isn't referencing core? Any ideas on quick workarounds?
Update: Opened a new "Class Library (.NET Core)", before first build I changed frameworks in project.json to
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
Then I created, in a different VS instance, a new "ASP.NET Core Web Application (.NET Core)".
I tried to add a reference to the .dll file for the new class library, now in a netcoreapp1.0 folder and I still get the same error:
.NET Core Projects only support referencing .NET framework assemblies in this release.
How to fix your problem
When you try to add the .dll as a reference for the API, your error message should say somewhere that you need to create a package in order to use that class library. It is described in the documentation.
However if you do not want to bother to make a package, for example if your class library is used now only in your API project, the easiest way is to build your class library as a Project of your Solution where the API lives. To do so, copy-paste your code in the Solution folder and include it as a project.
Some explanations about the version and frameworks
The Core template (I guess you are talking about the .NET Core API) should create a project.json with
Let's see what the lines are responsible for:
netcoreapp1.0
underframeworks
means your API is targeting the framework .NET Core 1.0. That version of the .NET Core framework implements the .NET Standard 1.6 (the list here) Good thing: your Class library also use this .NET Standard 1.6. Knowing the .NET Standard 1.6 that your Class library is using make you able to choose what version of .NET Core/Xamarin/.NET Framework you can use when you later want to develop a Web app/Mobile app/Windows software for exampleimports
lists other frameworks/version of packages that your application can usedotnet5.6
andportable-net45+win8
are deprecated and anetstandard
version should be used instead.dotnet5.6
is still mysterious for me.portable-net45+win8
is equivalent tonetstandard1.0
. If you let it it means that your application can use package using .NET Standard 1.0. This can be a problem because .NET Core 1.0 starts with .NET Standard 1.6 so I would actually delete those two lines.That being said, I am more than welcome for comments!