I\'m fairly new to .Net Core, but have made a working Asp.Net Core WebAPI site - now I want to share some code with another project...
The only way I have found to make this work, is to hack reference the .csproj file of the Client library: https://github.com/JonnyWideFoot/netcore-prototype/blob/master/src/JE.API.Experiment.Client/JE.API.Experiment.Client.csproj
<Reference Include="JE.Api.Experiment.Contract, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\JE.Api.Experiment.Contract\bin\$(Configuration)\net452\JE.Api.Experiment.Contract.dll</HintPath>
</Reference>
By hard-coding the path to the correct output folder from the contracts library, all is fine.
... thinking this could be a bug in visual studio.
Here's how I create shared libraries that can be consumed from both .NET Core projects and .NET 4.5 projects:
SharedLibrary\project.json
"dependencies": { },
"frameworks": {
"net45": { },
"netstandard1.1": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
},
"version": "1.0.0"
A consuming (.NET Core) library in the same solution references it like this:
"dependencies": {
"SharedLibrary": {
"target": "project",
"version": "1.0.0"
}
},
"frameworks": {
"netstandard1.1": { }
}
}
A consuming .NET 4.5 project using project.json
would look the same with the exception of net45
in the frameworks section. Installing in a csproj
-based .NET 4.5 project works too, if a NuGet package for SharedLibrary is produced.
According to the .NET Platform Standard docs, simply targeting netstandard1.1
should allow the shared library to be installed in .NET 4.5+ projects as well. I've run into strange issues with that, but it may have been the result of beta tooling.