【问题标题】:How to share a .Net Core project with a .Net Core Website and UWP app?如何与 .Net Core 网站和 UWP 应用共享 .Net Core 项目?
【发布时间】:2016-09-08 15:55:44
【问题描述】:

我正在创建一个概念证明解决方案,该解决方案将使用实体框架进行共享项目。我希望 UWP 项目和 .Net Core 网站引用共享项目。我能够让网站引用该项目并正确使用 Entity Framework Core。当我尝试让 UWP 应用程序使用相同的代码时,它会编译,但在运行时会失败。我也尝试过使用 NetStandard1.4 和 NetStandard1.6 更改框架,但是 Entity Framework Core 无法正常工作。

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

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

“System.IO.FileLoadException”类型的异常发生在 mscorlib.ni.dll 但未在用户代码中处理

附加信息:无法加载文件或程序集 'System.Runtime,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)

这是我用于共享项目的 project.json。

{
  "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 项目的 project.json

{
  "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": {}
  }
}

这是网站项目的 project.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%" ]
  }
}

【问题讨论】:

  • 仅靠json文件是无法解析的。什么是“netcoreapp1.0”,这是你的共享项目吗?这个共享项目是什么类型的?运行时组件?如果可以构建成功,能否请您调试异常抛出的位置?
  • 我不确定如何解释 notcoreapp1.0,但我找到了有关 stackoverflow 问题的更多信息:link。我将使用您询问的其他信息编辑我的帖子。
  • 嗨!您使用哪种类型的项目来分离 EFCore?谢谢!这里不清楚要做什么github.com/aspnet/EntityFrameworkCore/issues/9672

标签: .net asp.net-core uwp entity-framework-core


【解决方案1】:

我不确定 UWP 项目是否适用于 .NET Core 项目。也许您可以尝试将您的 EF 项目更改为可移植类库项目。

【讨论】:

    【解决方案2】:

    我想通了,请在 GitHub 上查看 Brice Lambson 的回答

    【讨论】:

    • (“内联”答案。)
    • 您可以将@bricelam 的回复标记为结束此主题的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2020-08-28
    • 2016-11-26
    • 2019-06-07
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多