如何与.net Core网站和UWP应用程序共享.net Core项目



我正在创建一个概念证明解决方案,将使用实体框架共享项目。我希望共享的项目是由一个UWP项目,也由一个。net核心网站引用。我能够得到网站引用项目和使用实体框架核心正确。当我试图让UWP应用程序使用相同的代码时,它会编译,但在运行时失败。我也试过改变框架周围使用NetStandard1.4和NetStandard1.6,但随后实体框架核心不能正常工作。

我的共享项目是一个。net Core类库(不是VS中的实际共享项目类型)。

这是我在运行UWP应用程序时得到的错误。当我尝试创建从DbContext继承的新Context类时,会发生这种情况:

System.IO类型的异常。fileloadeexception '发生在Mscorlib.ni.dll,但未在用户代码中处理

附加信息:无法加载文件或程序集的系统。运行时,版本=4.1.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'或其依赖项之一。的定位程序集的清单定义与程序集不匹配参考。(Exception from HRESULT: 0x80131040)

这是项目。

{
  "version": "1.0.0-*",
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "NETStandard.Library": "1.6.0",
    "System.ComponentModel.Annotations": "4.1.0",
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    }
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  }
}

这是项目。UWP项目

{
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2"
  },
  "frameworks": {
    "uap10.0": {
      "imports": [
        "netcoreapp1.0"
      ]
    }
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

这是项目。Json用于网站项目

{
  "dependencies": {
    "Domain": "1.0.0-*",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },
  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },
  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },
  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

我不确定UWP项目是否能很好地与。net Core项目一起工作。也许你可以尝试将EF项目更改为可移植类库项目。

我弄明白了,请参阅GitHub上Brice Lambson的答案

最新更新