从.NET Core 1.0类库引用mscorlib 4.0.0.0

时间:2016-07-28 20:49:21

标签: c# entity-framework .net-core class-library

我有一个面向.NET 4.6.1的.NET Core 1.0类库,并引用了.NET标准库1.6.0和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"
            ]
        }
    }
}

在我的项目中,我只是创建了身份模型,它扩展了基本身份框架模型(用户,角色等)。当我尝试编译时,会发生这种情况......

enter image description here

enter image description here

有任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:9)

这里的项目文件有两个问题,一个很容易修复,一个无法修复;)

  • 您的项目定位net461netstandard1.6。你的project.json说的是:为netstandard1.6建立目标并向NuGet撒谎并声称你是net461(谎言就是import所做的......不相信我,看看吧up;))。由于你的project.json骗了NuGet,你可以在那里添加Microsoft.AspNet.Identity.EntityFramework。并行添加net461netstandard1.6也无济于事,因为您无法添加依赖项。
  • NuGet依赖项Microsoft.AspNet.Identity.EntityFramework于2015年发布,基于.NET Framework(基于mscorlib)而非.NET Standard / .NET Core(基于System.Runtime)。谎言对依赖性基于mscorlib而不是System.Runtime的事实没有帮助。

您可以尝试的方法是(并正确)并行net461netstandard1.6,并尝试使用#ifdefs分别与Microsoft.AspNet.Identity.EntityFrameworkMicrosoft.AspNetCore.Identity.EntityFrameworkCore并行执行。但是,结果有多么有用,我不知道将使用什么结果库;)

答案 1 :(得分:9)

微软有一个可以提供帮助的nuget包。我不知道它的工作原理,但它解决了我的依赖问题:

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

或者只是在包管理器控制台中运行它:

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

编辑: 这被添加到.net核心1.1项目中。