C# 是否可以将签名的RestSharp NuGet软件包与Twilio一起使用?

C# 是否可以将签名的RestSharp NuGet软件包与Twilio一起使用?,c#,.net,twilio,restsharp,C#,.net,Twilio,Restsharp,我们既使用DocuSign的API,它需要RestSharp的签名版本,也希望集成Twilio,它需要未签名版本。我花了一点时间试图让这两个DLL为它们的每个依赖项解析,但没有任何运气。在这一点上,我希望有一种方法可以将已签名的RestSharp dll与Twilio一起使用。以前有人有过这方面的经验吗 当我尝试删除未签名的RestSharp时,我的DocuSign代码工作正常,但现在TwilioRestClient无法解析依赖项。这两个库都是105.2.3.0 Twilio.Api.dll中发

我们既使用DocuSign的API,它需要RestSharp的签名版本,也希望集成Twilio,它需要未签名版本。我花了一点时间试图让这两个DLL为它们的每个依赖项解析,但没有任何运气。在这一点上,我希望有一种方法可以将已签名的RestSharp dll与Twilio一起使用。以前有人有过这方面的经验吗

当我尝试删除未签名的RestSharp时,我的DocuSign代码工作正常,但现在TwilioRestClient无法解析依赖项。这两个库都是105.2.3.0

Twilio.Api.dll中发生“System.IO.FileLoadException”类型的异常,但未在用户代码中处理

其他信息:无法加载文件或程序集的RestSharp, Version=105.2.3.0,Culture=neutral,PublicKeyToken=null'或其 依赖关系。定位程序集的清单定义不正确 匹配程序集引用。(来自HRESULT的异常:0x8013100)


这个问题对我来说是个噩梦。在我的例子中,我使用的是EasyPost,它使用RestSharpSigned。同样的区别

我最终不得不停止直接依赖nuget来获取引用RestSharp的包。并使用工具向第三方DLL添加强命名。它还将对未签名DLL的引用修复为对新签名DLL的引用

  • 我将/packages/(easypost,twilio,restsharp)中的所有DLL复制到我的解决方案根目录中名为“resources”的目录中。这些最终将签入到您的源代码管理中

  • 在桌面上复制资源目录。如果出现问题,您希望有一种快速的方法来重新复制一组新的未触及的文件

  • 右键单击解决方案并点击“管理解决方案的nuget软件包”。删除Twilio、EasyPost、Restsharp、RestSharpSigned以及任何依赖Restsharp且现在在参考资料中有副本的软件包。当你这样做的时候, 记下哪些项目引用了哪些程序集。这对以后的工作很重要。注意:从所有项目中删除包将删除引用

  • 下载。通过绿色加号图标在/resources/中添加所有DLL。如果其中一些已经签署,这是可以的

  • 点击“签名程序集”,它将对所有未签名的程序集进行签名,并修复它们之间的引用,以指向新签名的版本

  • 检查项目并添加直接dll引用

  • 构建并运行您的应用程序,以确保您不会遇到任何关于缺少程序集的奇怪运行时错误

  • 高声欢呼“他妈的终于来了!”。向天空中的.Net诸神挥舞你的拳头,因为强烈的命名给你和数百万其他开发者带来了麻烦

  • 最终,我的计划是迁移到最新版本的Twilio(5.*),它不再依赖RestSharp。一旦发生这种情况,我将删除我的“references”文件夹,并返回到这些包的普通olenuget


    您解决了问题吗?没有。我唯一能解决这个问题的方法是将流程分离到不同的应用程序中。我最终通过一个消息队列在两者之间传输数据。