【问题标题】:Reference .NET Core 1.0 library from WPF参考 WPF 中的 .NET Core 1.0 库
【发布时间】: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”。

【问题讨论】:

    标签: c# .net wpf visual-studio .net-core


    【解决方案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 有趣,我以前没见过。
    猜你喜欢
    • 2016-08-04
    • 2017-09-18
    • 2017-04-25
    • 2016-07-02
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多