从WPF引用.NET Core 1.0库

Ale*_*hen 7 .net c# wpf visual-studio .net-core

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

我尝试了以下解决方案:

  • 参考项目:Visual Studio抱怨项目不是.exe或.dll,即使它是.

  • 引用编译的.dll:这真的很难看,但它起初似乎起作用.Intellisense可以使用它,WPF项目编译得很好.但是,只要我想使用.NET Core项目中的任何功能,就会抛出BadImageFormatException.

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

根据我的收集,这里有两个选择:

  • 做一些非常讨厌的事情,比如制作一个.NET Core Console项目并将所有对象作为字符串传递给两个程序

要么:

  • 放弃.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"
  }
}
Run Code Online (Sandbox Code Playgroud)

我想这两个dnx451net451.WPF项目也针对.net 4.5.1.我正在使用"Visual Studio 2015 Update 3"和".NET Core 1.0.1 VS 2015 Tooling Preview 2".

Nat*_*ini 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

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