我正在开发一个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"
}
}
我尝试了
dnx451
和 net451
两种。这个 WPF 项目也是针对 .net 4.5.1 的。我使用的是 "Visual Studio 2015 Update 3" 和“ .NET Core 1.0.1 VS 2015 Tooling Preview 2”。
dotnet ef
如果我不发出入口点就无法工作。解决方法非常简单(只需将该行放回即可),但我认为值得一提。 - Alexander Hoischen