是否可以将已签名的 RestSharp NuGet 包与 Twilio 一起使用?
Is it possible to use the signed RestSharp NuGet package with Twilio?
我们同时使用 DocuSign 的 API,它需要 RestSharp 的签名版本,我们正在寻求集成需要未签名版本的 Twilio。我花了一些时间试图让两个 DLL 解析它们的每个依赖项,但没有任何运气。在这一点上,我希望有一种方法可以将已签名的 RestSharp dll 与 Twilio 一起使用。有没有人以前有过这方面的经验?
当我尝试删除未签名的 RestSharp 时,我的 DocuSign 代码工作正常,但现在 TwilioRestClient 无法解析依赖项。两个库都是105.2.3.0.
An exception of type 'System.IO.FileLoadException' occurred in Twilio.Api.dll but was not handled in user code.
Additional information: Could not load file or assembly 'RestSharp,
Version=105.2.3.0, Culture=neutral, PublicKeyToken=null' or one of its
dependencies. The located assembly's manifest definition does not
match the assembly reference. (Exception from HRESULT: 0x80131040)
这个问题一直是我的噩梦。就我而言,我使用的是使用 RestSharpSigned 的 EasyPost。同样的区别。
我最终不得不停止直接依赖 nuget 来获取引用 RestSharp 的包。并使用工具为 3rd 方 dll 添加强命名。它还将对未签名的 dll 的引用修复为新签名的 dll。
我将所有 DLL 从 /packages/(easypost、twilio、restsharp)复制到我的解决方案根目录中名为 "resources" 的目录中。这些最终将被签入您的源代码管理。
复制桌面上的资源目录。如果出现问题,您希望有一种快速的方法来重新复制一组新的未触及的文件。
右键单击解决方案并点击 "manage nuget packages for the solution"。删除 Twilio、EasyPost、Restsharp、RestSharpSigned 和任何依赖于 RestSharp 的 nuget 包,现在在资源中有一个副本。当你这样做时,
记下您的哪些项目引用了哪些程序集。这对以后很重要。注意:从所有项目中删除包将删除引用。
下载Brutal Developer's Strong Namer Signer。通过绿色加号图标添加 /resources/ 中的所有 dll。如果其中一些已经签名就可以了。
点击"Sign Assemblies",它将对所有未签名的程序集进行签名,并将修复它们之间的引用以指向新签名的版本。
检查您的项目并添加直接 dll 引用。
构建并运行您的应用程序以确保您不会遇到任何关于缺少程序集的奇怪运行时间错误。
高声欢呼"Fucking Finally!"。向天空中的 .Net 众神挥拳,因为强命名给您和数百万其他开发者带来的所有麻烦。
最终,我的计划是迁移到最新版本的 Twilio (5.*),它不再依赖于 RestSharp。一旦发生这种情况,我将关闭我的 "references" 文件夹,然后返回这些包的普通 ole nuget。
我们同时使用 DocuSign 的 API,它需要 RestSharp 的签名版本,我们正在寻求集成需要未签名版本的 Twilio。我花了一些时间试图让两个 DLL 解析它们的每个依赖项,但没有任何运气。在这一点上,我希望有一种方法可以将已签名的 RestSharp dll 与 Twilio 一起使用。有没有人以前有过这方面的经验?
当我尝试删除未签名的 RestSharp 时,我的 DocuSign 代码工作正常,但现在 TwilioRestClient 无法解析依赖项。两个库都是105.2.3.0.
An exception of type 'System.IO.FileLoadException' occurred in Twilio.Api.dll but was not handled in user code.
Additional information: Could not load file or assembly 'RestSharp, Version=105.2.3.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
这个问题一直是我的噩梦。就我而言,我使用的是使用 RestSharpSigned 的 EasyPost。同样的区别。
我最终不得不停止直接依赖 nuget 来获取引用 RestSharp 的包。并使用工具为 3rd 方 dll 添加强命名。它还将对未签名的 dll 的引用修复为新签名的 dll。
我将所有 DLL 从 /packages/(easypost、twilio、restsharp)复制到我的解决方案根目录中名为 "resources" 的目录中。这些最终将被签入您的源代码管理。
复制桌面上的资源目录。如果出现问题,您希望有一种快速的方法来重新复制一组新的未触及的文件。
右键单击解决方案并点击 "manage nuget packages for the solution"。删除 Twilio、EasyPost、Restsharp、RestSharpSigned 和任何依赖于 RestSharp 的 nuget 包,现在在资源中有一个副本。当你这样做时, 记下您的哪些项目引用了哪些程序集。这对以后很重要。注意:从所有项目中删除包将删除引用。
下载Brutal Developer's Strong Namer Signer。通过绿色加号图标添加 /resources/ 中的所有 dll。如果其中一些已经签名就可以了。
点击"Sign Assemblies",它将对所有未签名的程序集进行签名,并将修复它们之间的引用以指向新签名的版本。
检查您的项目并添加直接 dll 引用。
构建并运行您的应用程序以确保您不会遇到任何关于缺少程序集的奇怪运行时间错误。
高声欢呼"Fucking Finally!"。向天空中的 .Net 众神挥拳,因为强命名给您和数百万其他开发者带来的所有麻烦。
最终,我的计划是迁移到最新版本的 Twilio (5.*),它不再依赖于 RestSharp。一旦发生这种情况,我将关闭我的 "references" 文件夹,然后返回这些包的普通 ole nuget。