Newtonsoft.JSON v9.01 + FileNotFoundException(.NET核心类库)

Leg*_*nds 12 c# json.net .net-core

(VS2015更新3 +补丁)

我有一个简单的.NET控制台应用程序(.NET 4.6)并引用了一个针对NetStandard v1.3的.NET核心类库.类库引用了Newtonsoft.JSON.

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Newtonsoft.Json": "9.0.1"
  },
  "buildOptions": { "platform": "anycpu" },

  "frameworks": {
    "netstandard1.3": {
      "imports": "dnxcore50"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

引用的NewtonSoft.JSON包在此处部署:

C:\用户\ UserAccount\.nuget \包\ Newtonsoft.Json\9.0.1

例外情况:

DotNetConsoleApplication.exe中发生未处理的"System.IO.FileNotFoundException"类型异常

附加信息:无法加载文件或程序集'Newtonsoft.Json,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一.该系统找不到指定的文件.

我想.net核心lib会引用netstandard1.0文件夹中的dll.

在此输入图像描述

Leg*_*nds 2

已解决 31.07.2016

创建一个全新的普通 .NET 控制台应用程序(不是 .NET Core)和 .NET Core 类库,而不预先在它们之间进行任何引用。

场景:
1.基于.NET 4.6的控制台应用程序,它引用了
2..Net Core Classlibrary(有对Newtonsoft.JSON v9.01的引用)

.NET core类库配置如下(project.json):

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Newtonsoft.Json": "9.0.1"
  },
  "buildOptions": { "platform": "anycpu" },

  "frameworks": {
    "netstandard1.3": {
      "imports": "dnxcore50"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

解决方案

1.) 首先从.Net core类库项目创建一个Nuget包。

以管理员身份打开命令行。转到 (cd) 到 .NET Core 类库项目 (.xproj) 的项目文件夹。

运行以下命令:

  点网包

在此输入图像描述

“pack”参数将从 .NET Core 类库创建一个 nuget 包,并将该包复制到 debug/release 文件夹,具体取决于您的项目配置。

将 nuget 包文件复制到托管本地 nuget 包的文件夹。我已将它们复制到:

C:\Users\Admin.nuget\packages\LocalPackages \NetCore46ClassLibrary


截屏: 在此输入图像描述
2.) 如果您没有本地 Nuget feed,则必须先创建一个!

本地 Nuget 文件夹(我将其命名为“LocalPackages”)将托管您的自定义 Nuget 包。本地 Nuget Feed 将指向“LocalPackages”,它是所有本地包的根文件夹。

在此输入图像描述

创建本地 nuget feed 并将 .net core 类库的 nuget 包复制到 localPackages 文件夹下的某个位置后,您就可以安装 .net core 类库 nuget 包了。

3.) 将.NET Core库Nuget Package安装到.NET控制台应用程序中

您现在必须再次打开包管理器控制台。选择包源:本地包(这是我的本地提要名称,可能会有所不同)。默认项目应该是您的 .NET 控制台应用程序。

在此输入图像描述

将 .net core 类库 nuget 包安装到控制台应用程序中,在我的例子中:

install-package NetCore46ClassLibrary
Run Code Online (Sandbox Code Playgroud)

就是这样 !

我的系统
在此输入图像描述

dotnet --版本
1.0.0-preview2-003121