从WPF引用.NET Core 1.0库

8

我正在开发一个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个回答

4
您的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 如果我不发出入口点就无法工作。解决方法非常简单(只需将该行放回即可),但我认为值得一提。 - Alexander Hoischen
@AlexanderHoischen 很有趣,我之前没有看到过。 - Nate Barbettini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接