2016-10-07 2 views
3

우리는 RestSharp의 서명 된 버전이 필요한 DocuSign의 API를 사용하고 있으며 서명되지 않은 버전이 필요한 Twilio를 통합하려고합니다. 두 DLL을 각각의 의존성에 대해 해결하기 위해 약간의 시간을 보냈으며 운이 없었습니다. 이 시점에서 Twilio와 함께 서명 된 RestSharp dll을 사용할 수있는 방법이 있기를 바랍니다. 이전에 경험이있는 사람이 있습니까?Twilio에서 서명 한 RestSharp NuGet 패키지를 사용할 수 있습니까?

서명되지 않은 RestSharp를 제거하려고하면 DocuSign 코드가 제대로 작동하지만 TwilioRestClient가 종속성을 해결할 수 없습니다. 두 라이브러리는 모두 105.2.3.0입니다.

Twilio.Api.dll에서 'System.IO.FileLoadException'유형의 예외가 발생했지만 사용자 코드에서 처리되지 않았습니다.

추가 정보 : 파일 또는 어셈블리 'RestSharp, 버전 = 105.2.3.0, Culture = neutral, PublicKeyToken = null'또는 종속성 중 하나를로드 할 수 없습니다. 위치한 어셈블리의 매니페스트 정의가 과 일치하지 않습니다. (HRESULT 예외 : 0x80131040)

+0

문제를 해결 했습니까? –

+1

아니요.이 문제를 해결할 수있는 유일한 방법은 프로세스를 여러 응용 프로그램으로 분리하는 것입니다. 메시지 큐를 사용하여 두 서버간에 데이터를 전송했습니다. – DevTech

답변

2

이것은 나에게 악몽이었습니다. 제 경우에는 RestSharpSigned를 사용하는 EasyPost를 사용하고있었습니다. 같은 차이.

나는 RestSharp를 참조한 패키지에 대해 결국 너겟에 직접적으로 의존하지 않아야했습니다. 그리고 제 3 자 dll에 강력한 이름을 붙이는 도구를 사용했습니다. 또한 서명되지 않은 dll에 대한 참조가 새로 서명 된 dll로 수정됩니다.

  1. 나는 "자원"이라고 내 솔루션의 루트 디렉토리에/패키지/(easypost, twilio, restsharp)에서 모든 DLL을 복사. 이것들은 결국 소스 컨트롤에 체크인됩니다.

  2. 바탕 화면의 resources 디렉토리 사본을 만드십시오. 무언가가 망가지면 손쉬운 새로운 파일을 다시 복사 할 수있는 빠른 방법을 원합니다.

  3. 솔루션을 마우스 오른쪽 단추로 클릭하고 "솔루션의 nuget 패키지 관리"를 클릭하십시오. Twilio, EasyPost, Restsharp, RestSharpSigned 및 RestSharp에 의존하는 모든 항목에 대한 nuget 패키지를 제거하면 이제 자원에 사본이 있습니다. 이렇게하면 은 어떤 프로젝트에서 어떤 어셈블리를 참조했는지 기록합니다. 이것은 나중에 중요합니다. 참고 : 모든 프로젝트에서 패키지를 제거하면 참조가 삭제됩니다.

  4. 다운로드 Brutal Developer's Strong Namer Signer./resources /에있는 모든 dll을 녹색 더하기 아이콘을 통해 추가하십시오. 그들 중 일부가 이미 서명했다면 괜찮습니다.

  5. "서명 어셈블리"를 클릭하면 모든 서명되지 않은 어셈블리에 서명하고 새 서명 된 버전을 가리 키도록 참조를 수정합니다.

  6. 프로젝트를 통해 직접 dll 참조를 추가하십시오.

  7. 누락 된 어셈블리에 대한 이상한 런타임 오류가 발생하지 않도록 앱을 빌드하고 실행하십시오.

  8. 제기 된 목소리로 "Fucking Finally!" 승리로. 강력한 명명법으로 인해 하늘에있는 .Net Gods에서 주먹을 흔들면 다른 수백만 명의 개발자가 발생했습니다.

궁극적으로, 내 계획이 Twilio의 최신 버전으로 마이그레이션하는 것입니다 (5 *) 더 이상 모든 RestSharp에 대한 종속성이없는. 그런 일이 생기면 필자는 "references"폴더를 죽이고이 패키지에 대한 일반 ole nuget으로 돌아갈 것입니다.

enter image description here

관련 문제