gpt4 book ai didi

c# - 无法从程序集 Newtonsoft.Json 加载类型 'Newtonsoft.Json.JsonConvert'

转载 作者:行者123 更新时间:2023-12-05 06:59:53 27 4
gpt4 key购买 nike

我在谷歌上花了很长时间,所以如果这是一个简单的修复请原谅我,但我找不到任何与 C# 中这个特定问题的修复相关的内容。

当尝试使用以下代码时,出现此错误:

string obj = JsonConvert.SerializeObject(playerObject);
Could not load type 'Newtonsoft.Json.JsonConvert' from assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'.

我在搜索时唯一能真正找到的是遇到版本不匹配错误的人,据我所知,这不是我的问题。

完整代码供引用:(“logHigh”是我使用的一个日志函数)

public void convertToObject(webPlayerObjArray playerObject)
{
logHigh("Entered function");
try
{
logHigh("Serializing");
string obj = JsonConvert.SerializeObject(playerObject);
logHigh(obj);
webPlayerObjArray plrobjarr = JsonConvert.DeserializeObject<webPlayerObjArray>(obj);
logHigh(plrobjarr.users[0].badgeName);
}catch (Exception e)
{
logHigh(e.Message);
}
logHigh("Finished function");
}
webPlayerObjArray playerFile = new webPlayerObjArray();

webObject webObj1 = new webObject();
webObj1.steamID = "test1";
webObj1.badgeName = "test2";
webObj1.weaponSkinName = "test3";
webObj1.sailName = "test4";
webObj1.cannonSkinName = "test5";

webObject webObj2 = new webObject();
webObj2.steamID = "test1";
webObj2.badgeName = "test2";
webObj2.weaponSkinName = "test3";
webObj2.sailName = "test4";
webObj2.cannonSkinName = "test5";

playerFile.users = new webObject[2];
playerFile.users[0] = webObj1;
playerFile.users[1] = webObj2;
logHigh(playerFile.users[0].badgeName);
logHigh(playerFile.users[1].badgeName);

类定义:

[System.Serializable]
public class webObject
{
public string steamID { get; set; }
public string badgeName { get; set; }
public string sailName { get; set; }
public string weaponSkinName { get; set; }
public string cannonSkinName { get; set; }
}

[System.Serializable]
public class webPlayerObjArray
{
public webObject[] users { get; set; }
}

使用 visual studio 2019通过 NuGet 包管理器添加 Newtonsoft

  • 版本 12.0.3

对象声明是临时的。稍后将切换到从网页加载 json,但我只是想让它在第一个实例中工作,因此函数名称。

可能有一个简单的修复方法,但不幸的是,到目前为止我还没有找到它。

基于评论和测试的额外信息:

  • 它是游戏模组的类库,而不是网络项目。
  • 添加:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.3" /> //12.0.3.23909 also had no effect
</dependentAssembly>

不幸的是,app.config 没有任何效果,无论是否存在。

  • VS 2019 中的 Newtonsoft.Json 引用没有警告
  • 重建项目没有效果,(最初必须这样做,因为我的函数最初拒绝运行,一旦我添加了任何引用 DLL 的代码,在成功重建后我终于看到了上面的错误)
  • bin\Debug 中的 dll 版本与 VS 2019 中引用的版本相同
  • 创建一个新项目并复制代码,但没有成功
  • 更改目标框架(4.5 或 4.7.2(并使用相应的 dll 版本)无效
  • 尝试了以下以前版本的 Newtonsoft.Json,但没有成功:
    • 12.0.3
    • 11.0.2
    • 10.0.3
    • 9.0.1
    • 8.0.3

最佳答案

我遇到了同样的问题,即使您使用 Newtonsoft.Json 的版本 12.0.3.23909,它也只适用于 newversion="12.0.0.0"。

<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
</dependentAssembly>

关于c# - 无法从程序集 Newtonsoft.Json 加载类型 'Newtonsoft.Json.JsonConvert',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64281858/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com