How can I change a .NET standard library to a .NET framework library?

Solution 1:

Open up the project file (.csproj) and change the TargetFramework to net462

<PropertyGroup>
  <TargetFramework>net462</TargetFramework>
</PropertyGroup>

Solution 2:

My personal experience in Visual Studio 2017 is that recreating project and adding existent sources is the simplest, safest and most effective way - because .Net Framework based csproj file has extra xml elements (comparing with Standard based), it seems changing "TargetFramework" is not enough. Below is portion of diffs appeared by default:


enter image description here

Solution 3:

If you are publishing your class library as a Nuget package then there is a better way to set this up. Check out this article:

https://weblog.west-wind.com/posts/2017/Jun/22/MultiTargeting-and-Porting-a-NET-Library-to-NET-Core-20

Basically you can setup your class library for multi targeting, allowing it to be imported into .net core projects as well as different versions of .net frameworks.

Solution 4:

There are a few steps that I did and worked for me:

  1. git push your code, so you have a back up :)
  2. Unload the project in VS (right click on the project and unload)
  3. Edit the project in VS (right click and edit)
  4. Replace the TargetFramework OR/AND TargetFrameworkVersion with <TargetFramework>netcoreapp2.0</TargetFramework>

  5. Change the project line, that's usually the first line (after xml root) to: <Project Sdk="Microsoft.NET.Sdk">

  6. Remove the import that's usually the second line (after the xml root)

  7. Keep your PropertyGroups that describe the build options, if you want (I want mine as are custom)
  8. Remove the references and the file references, they are not needed.
  9. Close the file and reload (right click reload).
  10. Delete the assemblyinfo file (from properties folder) as it is not needed, the assembly version comes now from the proj
  11. Right click on the project and go to properties to see that you don't have any error in proj file. Ensure that you don't have typos or tags that are not close.
  12. Build. If you have dependencies that you are missing then right click and on the project and add them. - I suppose that you don't want to edit them in the proj. Or you can do a dotnet restore or dotnetbulid to add them, as you would like.

Hope this works for you. They seem a lot of steps but they are not that complicated, and this is one time effort.