문제

이미 생성된 어셈블리가 하나 있습니다. Static.dll, 그리고 런타임에 생성하는 동적 어셈블리는 다음과 같습니다. Dynamic. Dynamic IL 코드를 생성하여 새로운 유형을 생성합니다. Static.dll.언제 Dynamic 생성되고(성공적으로 저장됨) 실행 파일이 실행되면 어셈블리를 로드할 수 없기 때문에 오류가 발생합니다. Static.dll 유형.나는 이 일이 2000년 이후부터 일어나고 있다고 믿는다. Dynamic exe 출력에서 ​​이 dll을 찾을 수 없습니다(또는 적어도 이것은 내 추측입니다).

이것을 추가하는 방법은 무엇입니까? Static.dll 누군가가 결과 실행 가능한 출력을 실행할 때 참조 Dynamic 참조된 유형을 찾을 수 있습니까?

나는 대해 알고있다 Assembly.Load(), 하지만 이것만으로는 아무것도 바뀌지 않습니다.아니면 적어도 런타임에 유형을 사용할 필요가 없고 오히려 Dynamic 실행 가능.

마지막으로 내가 통제하는 것은 Static.dll, 따라서 문제를 해결하기 위해 프로젝트에서 수행할 수 있는 작업이 있으면 수행할 수 있지만 별도로 유지해야 합니다(동적 어셈블리를 만들 때마다 이 라이브러리를 내보내고 싶지 않습니다).기본적으로 나는 생각하다 나는 동적 어셈블리를 갖고 싶습니다. .assembly extern mscorlib 매니페스트 저장에 Static mscorlib의 위치입니다.

감사해요

도움이 되었습니까?

해결책

이것을 추가하는 방법은 무엇입니까? Static.dll 누군가가 결과 실행 가능한 출력을 실행할 때 참조 Dynamic 참조된 유형을 찾을 수 있습니까?

참조가 자동으로 추가됩니다.동적 어셈블리가 실행될 때 어셈블리를 찾기 위해 일반적인 어셈블리 검색 규칙이 적용됩니다.귀하는 다음 중 하나를 수행해야 합니다:

  • Dynamic.dll과 함께 static.dll을 제공하십시오.
  • GAC에 static.dll을 넣으십시오(그러나 다음을 수행하십시오:이러지 마세요!)
  • static.dll을 찾을 수 있는 사용자 지정 검색 경로 구성을 사용하여 사용자 지정 AppDomain에서 Dynamic.dll을 실행합니다.
  • AppDomain.AssemblyResolve를 처리하여 static.dll 제공
  • ILMerge와 같은 것을 사용하여 static.dll과 Dynamic.dll을 융합하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top