DLL을 참조하는 EXE가 있습니다.이 예제에서는 TestDLL.dll이라고합니다.
EXE는 C#으로 작성되었으며 DLL은 VB .Net으로 작성되었습니다.어셈블리 바인딩 및 리디렉션
DLL의 데모 어셈블리 버전을 만들었습니다 (예 : TestDLL.dll 버전 1.0.0.0).
데모 버전 DLL (1.0.0.0)에 대한 참조로 EXE를 컴파일하려고합니다. 그 다음 - EXE가 같은 DLL을 사용하기를 원하지만 모든 버전의 GAC에 넣을 것입니다. 그렇게하기 위해서는
, 나는 FALSE에 "로컬 복사"DLL의 참조의 속성을 설정합니다.
목표는 예를 들어 - 컴파일 한 후 어셈블리 버전 2.1.6.0을 사용하여 GAC TestDLL.dll을 넣을 것이고 EXE는 어셈블리 리디렉션 바인딩을 사용하여 찾을 것입니다. 이를 위해 설정 파일을 사용했습니다.
이 http://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.71).aspx
그래서 내 config 파일은 다음과 같이 약 같습니다 : 나는 그것을 만들려면이 링크를 사용
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<!-- Assembly versions can be redirected in application, publisher policy, or machine configuration files. -->
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.1.6.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
문제 모두 그 일을 한 후, 나는 EXE를 실행하고있는 DLL을 액세스 할 때, 내가 유명한 오류가 발생했습니다 : System.IO.FileNotFoundException : 파일 또는 어셈블리 'TestDLL, 버전 = 1.0.0.0, 문화 = 중립, PublicKeyToken = 9d8162944bd6fdc7'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다. 파일 이름 : 'TestDLL, 버전 = 1.0.0.0는 문화 =, PublicKeyToken = 9d8162944bd6fdc7 중립'
의미, EXE 파일은 I가 참조하는 원래의 DLL를 찾을 수 없습니다. GAC를 "참조"하거나 리플렉션을 사용할 수 있음을 알고 있지만이 EXE는이 방법으로 만 작동하기 때문에 원하지 않습니다.
누구에게 어떤 문제가 있으며 문제를 해결하는 방법을 알고 있습니까?
감사합니다.
참조의 "특정 버전"속성을 false로 설정 했습니까? –
.config 파일을 게시 할 수 있습니까? – Xharze
물론, 참조의 "특정 버전"속성도 false로 설정합니다. –