参考 WPF 中的 .NET Core 1.0 库

Posted

技术标签:

【中文标题】参考 WPF 中的 .NET Core 1.0 库【英文标题】:Reference .NET Core 1.0 library from WPF 【发布时间】:2017-04-19 02:41:25 【问题描述】:

我目前正在 WPF 中开发一个桌面应用程序,它使用 .NET Core 库来更轻松地移植到不同的平台。但是,我似乎无法从 WPF 应用程序中引用 .NET Core 库。

我尝试了以下解决方案:

引用项目: Visual Studio 抱怨该项目不是 .exe 或 .dll,即使它是。

引用编译后的.dll:这确实很难看,但一开始似乎可以工作。 Intellisense 没问题,WPF 项目编译得很好。但只要我想使用 .NET Core 项目中的任何功能,就会引发 BadImageFormatException。

dotnet pack 项目并引用 .nupkg:安装一堆额外的包并在使用任何功能时抛出 BadImageFormatException。

据我所知,这里有两个选项:

做一些真正 hacky 的事情,比如创建一个 .NET Core 控制台项目并在两个程序之间将所有对象作为字符串传递

或者:

放弃 .NET Core 并使用 EF6。

这是我的 project.json:


  "version": "1.0.0-*",

  "buildOptions": 
    "debugType": "portable",
    "emitEntryPoint": true
  ,

  "dependencies": 
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0",
    "Microsoft.EntityFrameworkCore.Design": 
      "version": "1.0.0-preview2-final",
      "type": "build"
    
  ,

  "frameworks": 
    "netcoreapp1.0": 
      "dependencies": 
        "Microsoft.NETCore.App": 
          "type": "platform",
          "version": "1.0.0"
        
      ,
      "imports": "dnxcore50"
    ,
    "dnx451": 
  ,

  "tools": 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  

我尝试了dnx451net451。 WPF 项目也以 .net 4.5.1 为目标。我正在使用“Visual Studio 2015 Update 3”和“.NET Core 1.0.1 VS 2015 Tooling Preview 2”。

【问题讨论】:

【参考方案1】:

您的project.json 不适合图书馆。一个库项目应该如下所示:


  "dependencies": 
      "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0",
      "Microsoft.EntityFrameworkCore.Design": 
        "version": "1.0.0-preview2-final",
        "type": "build"
      
  ,
  "frameworks": 
    "net451":  ,
    "netstandard1.3": 
      "dependencies": 
        "NETStandard.Library": "1.6.0"
      
    
  ,
  "tools": 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  

当您运行 dotnet pack 时,将生成两个 DLL:一个用于 .NET 4.5.1,一个用于 .NET Standard 1.3(或您想要定位的任何 netstandard)。 .NET 4.5.1 DLL 应该与您的 WPF 项目兼容。

【讨论】:

很抱歉花了这么长时间才接受,但你的答案很好,除了dotnet ef 如果我不发出入口点就不起作用。解决方法很简单(只需将线路放回原处),但我认为值得一提。 @AlexanderHoischen 有趣,我以前没见过。

以上是关于参考 WPF 中的 .NET Core 1.0 库的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core 1.0 中的 System.Environment

少量代码设计一个登录界面 – .NET CORE(C#) WPF开发

WPF .NET Core 中的 gRPC 错误

NET Core 3.0中的WPF

应用程序使用统计信息 – .NET CORE(C#) WPF界面设计

在.NET Core 3.0中的WPF中使用IOC图文教程