【问题标题】:CS0246 Type or namespace "Newtonsoft" not foundCS0246 类型或命名空间“Newtonsoft”未找到
【发布时间】:2018-11-23 12:59:17
【问题描述】:

在全新安装 Unity3D (2018.1.1f1) 后,它安装了 VS 2017 (15.7.3)。 我开始了一个cs脚本,并且想调试一个对象“print_r”样式,所以我通过nuGet Package-Manager安装了Newtonsoft.Json 11.0.2。 如果我在 pakage-console 中调用“Get-Package”,它会显示给我

Newtonsoft.Json                     {11.0.2}                                 Assembly-CSharp  

不幸的是,当我尝试编译时它仍然向我推送错误:

Schweregrad Code    Beschreibung    Projekt Datei   Zeile   Unterdrückungszustand

Fehler CS0246 Der Typ- oder Namespacename "Newtonsoft" wurde nicht gefunden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis)。组装-CSharp C:\Users\bubu\Documents\Therapiefilm\Assets\test.cs 4 Aktiv 这意味着未找到命名空间“Newtonsoft”或缺少组装链接。

但我不知道错误实际上是什么。 ;-(

欢迎任何提示! 问候 雷内' ps:我的脚本来源:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;

public class test : MonoBehaviour {

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
    private static void Dump(object o)
    {
        string json = JsonConvert.SerializeObject(o, Formatting.Indented);
        Console.WriteLine(json);
    }
}

【问题讨论】:

  • 在项目上试用 RMB 并恢复 NuGet 包。

标签: c# json unity3d namespaces json.net


【解决方案1】:

建议使用已将其更改为与 Unity3D 兼容的已准备好的 Newtonsoft.Json 分支之一。它们比 NuGet 包更易于使用,并且不像官方 NuGet 包在构建到 Android、iOS、WebGL 等 AOT 目标时会在运行时失败,它们都支持这一点。以下是前三名:

jilleJr 的变体是撰写本文时唯一的活跃分叉。其他已停止开发。

安装说明取自jilleJr's wiki

打开 /Packages/manifest.json,为 jillejr 添加范围,然后将包添加到依赖项列表中。

阿拉:

{
  "scopedRegistries": [
    {
      "name": "Packages from jillejr",
      "url": "https://npm.cloudsmith.io/jillejr/newtonsoft-json-for-unity/",
      "scopes": ["jillejr"]
    }
  ],
  "dependencies": {
    "jillejr.newtonsoft.json-for-unity": "12.0.201",

    // ...
  }
}

// ... 表示您在 manifest.json 中的其余包,例如所有 "com.unity.*" 依赖项

【讨论】:

    【解决方案2】:

    我发现合并 Newtonsoft.Json 的最简单方法是转到 NuGet site,然后手动下载该软件包。然后,将所有文件解压缩到 assets 目录下的“Plugins”文件夹中,即 Assets/Plugins/Json.NET。

    您还应该将播放器脚本运行时版本设置为 .NET 4.x。我还将我的 API 兼容性设置为 .NET Standard 2.0。虽然推荐,但不是必需的。

    【讨论】:

    • 感谢您的建议。我重新安装了 NuGet 包并手动添加了 Newtonsoft.Json 引用(因为由于某种原因它没有自动设置引用),现在在 VS 中,我的脚本知道该类并且不再显示任何错误!然而,统一编辑器仍然显示相同的错误消息。请问您还有什么想法吗?
    • Newtonsfot.Json 文件(其中四个)在 Assets/Plugins/Json.NET 下?在编辑器中是否可以选择 DLL 来查看 DLL 的信息?控制台中是否有 DLL 已被删除的警告?您的项目播放器设置是否设置为 .NET 4.x?
    • 耶!将播放器设置更改为 .net4.x 就成功了!非常感谢!
    • @ReneMunsch,如果您可以将其标记为答案,以便我建立自己的声誉,我将不胜感激。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2019-07-14
    相关资源
    最近更新 更多