参考 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"
我尝试了dnx451
和net451
。 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开发