我们正在使用DocuSign的API,它需要RestSharp的签名版本,我们正在寻找整合需要未签名版本的Twilio。我花了一些时间试图让两个DLL解决每个依赖项,并没有任何运气。在这一点上,我希望有一种方法可以使用Twilio签名的RestSharp dll。有没有人有过这方面的经验?
当我尝试删除未签名的RestSharp时,我的DocuSign代码工作正常,但现在TwilioRestClient无法解析依赖项。两个库都是105.2.3.0。
Twilio.Api.dll中出现“System.IO.FileLoadException”类型的异常,但未在用户代码中处理。
其他信息:无法加载文件或程序集'RestSharp, Version = 105.2.3.0,Culture = neutral,PublicKeyToken = null'或其中一个 依赖。定位程序集的清单定义没有 匹配程序集引用。 (HRESULT异常:0x80131040)
答案 0 :(得分:2)
这个问题一直是我的噩梦。就我而言,我使用的是使用RestSharpSigned的EasyPost。相同的差异。
我最终不得不停止直接依赖nuget来引用RestSharp的软件包。并使用工具为第三方dll添加强大的命名。它还修复了对新签名的dored的无符号dll的引用。
我将/ packages /(easypost,twilio,restsharp)中的所有DLL复制到我的解决方案根目录中的一个名为“resources”的目录中。这些将最终签入您的源代码管理。
制作桌面资源目录的副本。如果有什么东西搞砸了你想要快速重新复制一组新的未经处理的文件。
右键单击解决方案并点击“管理解决方案的nuget包”。删除Twilio,EasyPost,Restsharp,RestSharpSigned和依赖于RestSharp的任何东西的nuget包,现在有资源副本。当你这样做时, 记下哪些项目引用了哪些程序集。这对以后很重要。注意:从所有项目中删除包将删除引用。
下载Brutal Developer's Strong Namer Signer。通过绿色加号图标添加/ resources /中的所有dll。如果其中一些已经签名就可以了。
点击“签署程序集”,它将对所有未签名的程序集进行签名,并修复它们之间的引用以指向新签名的版本。
浏览您的项目并添加直接的dll引用。
构建并运行您的应用程序,以确保您不会遇到任何有关缺少程序集的奇怪运行时错误。
用高高的声音喊道:“他妈的最后!”在胜利。在天空中的.Net众神中摇动你的拳头,因为强大的命名已经给你和数百万其他开发者带来了麻烦。
最终,我的计划是迁移到最新版本的Twilio(5. *),它根本不再依赖于RestSharp。一旦发生这种情况,我就会杀死我的“参考”文件夹,然后回到普通的ole nuget来获取这些包。