RestSharp:RestClient构造函数引发System.IO.FileNotFoundException异常。

3
我正在使用Visual Studio 2022开发一个.NET Core 3.1 Azure函数应用程序。今天我升级了RestSharp到最新版本后,当我尝试实例化一个新的RestClient时,出现了以下异常:
System.Reflection.TargetInvocationException: 调用目标的异常。 ---> System.IO.FileNotFoundException: 找不到文件或程序集'System.Text.Json, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'。系统无法找到指定的文件。 文件名:'System.Text.Json, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' at RestSharp.Serializers.Json.SystemTextJsonSerializer..ctor()
这是我用来实例化客户端的代码:
var clientOptions = new RestClientOptions
{
    BaseUrl = new Uri("https://xxxxxxx.com"),
    Timeout = 29000
};
_restClient = new RestClient(clientOptions);   

无论我是否向构造函数传递 ClientOptions 对象,都会出现错误。
我尝试通过Nuget安装System.Text.Json 5.0.0.0版本,但无济于事。我还删除了其他可能依赖不同版本的System.Text.Json的软件包,但似乎也不起作用。
我尝试清理解决方案,删除obj和bin文件夹,关闭并重新打开Visual Studio,甚至重新启动计算机。但仍然无法解决问题。
有什么建议吗?我都急疯了。

2
添加NuGet RestSharp.Serializers.SystemTextJson - Lei Yang
嗨,谢谢 @lei-yang 的回复。不幸的是,建议添加上述 NuGet 包并没有解决我的问题。 - QBBryant
当你遇到困难时,有时候退一步也是有用的。看起来不错! - Lei Yang
好的...看起来这似乎与功能应用所需的Microsoft包有关:Microsoft.Azure.WebJobs.Extensions.*和/或Microsoft.NET.Sdk.Functions。我通过将我的测试VS项目转换为函数应用程序来验证了这一点。显然,最新版本的RestSharp与.NET Core 3.1函数应用程序不完全兼容。我将尝试恢复到早期版本的RestSharp和/或将我的函数应用程序更新到.NET 5或6。 - QBBryant
'Function app'是什么意思? - Lei Yang
显示剩余4条评论
1个回答

1
如果您的目标是 .net core 函数应用程序,您可以使用 .net core 引用。
如果您正在使用包含 .netRestSharp,请从您的 .netcore 项目中删除它。
这里我正在使用针对 .netcore azure function 的 RestSharp.netcoreResharp.Newtonsoft.Json.NetCore 包已弃用,因此您可以重定向到 RestSharp.Serializers.NewtonsoftJson,您需要安装此包。
在您的 .csproj 文件中,在 < PropertyGroup> 下面添加以下代码行。
<_FunctionsSkipCleanOutput> true </_FunctionsSkipCleanOutput>

该函数用于跳过先前已加载的输出引用缓存。每次加载新的引用。

enter image description here

我们添加了RestSharp.Serializers.NewtonsoftJson软件包,但没有添加_FunctionsSkipCleanOutput

enter image description here

添加了RestSharp.Serializers.NewtonsoftJson软件包和_FunctionsSkipCleanOutput之后:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接