Referencing mscorlib 4.0.0.0 from .NET Core 1.0 cl

2019-01-26 07:35发布

问题:

I have a .NET Core 1.0 class library which targets .NET 4.6.1 and references the .NET Standard Library 1.6.0 and Identity Framework 2.2.1

project.json

{
    "version": "1.0.0-*",

    "dependencies": {
        "Microsoft.AspNet.Identity.EntityFramework": "2.2.1",
        "System.Runtime": "4.1.0",
        "NETStandard.Library": "1.6.0"
    },

    "frameworks": {
        "netstandard1.6": {
            "imports": [
                "net461"
            ]
        }
    }
}

In my project I'm just creating the identity models, which extend the base Identity Framework models (User, Role etc). When I try to compile, this happens...

Any ideas how to resolve this?

回答1:

There are two problems with your project file here, one simple to fix, one impossible to fix ;)

  • Your project does not target net461 and netstandard1.6. What your project.json says is: Build target for netstandard1.6 and lie to NuGet and claim you are net461 (that lying is what import does ... do not believe me, look it up ;)). And since your project.json lied to NuGet, you where able to add Microsoft.AspNet.Identity.EntityFramework. Adding net461 and netstandard1.6 in parallel will not help you either because you cannot add the dependency then.
  • The NuGet dependency Microsoft.AspNet.Identity.EntityFramework is released in 2015 and based on the .NET Framework (mscorlib based) and not on .NET Standard / .NET Core (System.Runtime based). The lying does not help about the fact that the dependency is based on mscorlib and not System.Runtime.

What you could try, is targeting (correctly) in parallel net461 and netstandard1.6 and try to do a parallel implementation with Microsoft.AspNet.Identity.EntityFramework and Microsoft.AspNetCore.Identity.EntityFrameworkCore respectively using #ifdefs. However, how useful the result would be, I have no idea for what the resulting library would be used ;)



回答2:

Microsoft has a nuget package that can help. I don't know the specifics of how it works but it resolved my dependency issues:

https://www.nuget.org/packages/Microsoft.NETCore.Portable.Compatibility/

Or simply run this in the package manager console:

Install-Package Microsoft.NETCore.Portable.Compatibility -Version 1.0.1

edit: This was added to a .net core 1.1 project.