2013-07-31 2 views
0

3.6 버전의 LO SDK 라이브러리를 사용하여 LibreOffice Calc에서 보고서를 작성하는 응용 프로그램을 만들고 있습니다. 이러한 dll은. NET 2.0, afaik, 내 응용 프로그램은. NET 3.5, 그래서 함께 잘 작동합니다.해당 폴더에서 dll을로드하려고하는 응용 프로그램

LO 4.0이 설치된 PC에서 응용 프로그램을 실행하면 응용 프로그램 폴더 (올바른 DLL이 복사 된 곳)에서 dll을로드하려고 시도하는 것처럼 보이지만 호스트 PC의 어딘지에서는 예외가 발생합니다 " 이 어셈블리는 현재로드 된 런타임보다 최신 런타임에 의해 작성되며로드 할 수 없습니다 "cli_uno.dll로드시 (보고서를 실행하려고 할 때). LO 4 SDK dll이 .NET 4.0 용으로 어셈블 된 것처럼 보입니까?

글쎄, .NET 4.0 용 응용 프로그램을 다시 빌드하는 옵션이 아닙니다 (새 .NET 5.0 dll이있을 때 반복됩니다).

응용 프로그램이 자체 폴더에서만 dll을로드하도록 만들 수있는 방법이 있습니까?

UDPATE 실제로 cli_uno.dll은 내 응용 프로그램에 전혀 포함되어 있지 않습니다. LO 설치 폴더에 있으며 분명히 응용 프로그램에 포함 된 'cli _ *. dll'파일에 의해 분명히 호출됩니다. 그러나 나는 어떤 버전의 LO가 설치 될지 제어 할 수 없다! 그것은 어떤 assemly 버전 설정에 의해 통제 불능입니다. 애플리케이션이 LO 3.6으로 정상적으로 작동하면 올바르지 않지만 LO 4.0으로 업그레이드 한 후 작업을 중단하십시오. 진심으로 저는 고대 델파이 7에서 고대 라이브러리를 사용하여 MS 엑셀 (XP/2000 버전이 실제로 만들어 졌을 때 만들어졌습니다)에 연결하여 응용 프로그램을 만들었습니다. 적어도 2007 버전에서는 잘 작동합니다.

다른 버전의 애플리케이션 (심지어 다른 플랫폼)이 상호 운용하고 데이터를 교환 할 수 있기 때문에 인터페이스를 사용하지 않아도됩니까? LO SDK를 완전히 잘못 사용할 수 있습니까?

+0

중복 될 수 있습니까? http://stackoverflow.com/questions/267693/how-can-i-force-net-to-use-a-local-copy-of-an-assembly-thats-in-the-gac –

+0

모양, 나 그걸 들여다 보겠습니다. 고마워요. – yaapelsinko

+0

지금 알 수 있듯이 'cli_uno.dll'은 내 응용 프로그램의 일부가 아니고 LO 설치이며 내 응용 프로그램에서 호출 한 응용 프로그램 어셈블리 버전 설정을 제어하지 않습니다. 나는 질문을 updatew. – yaapelsinko

답변

0

지역 협의회에 서명되어 있습니까? 폴더에 포함 된 dll의 서명을 제거 할 수 있으면 해당 폴더에서 항상로드됩니다. 서명 된 동안 GAC가 먼저 조사합니다.

+0

사실, 내 응용 프로그램 어셈블리 구성 요소에는 서명이되어 있지 않습니다. 그러나 LO SDK의 dll에 서명해야합니다. 의심에서 나는 그것에서 사인을 제거 할 수 있습니다. – yaapelsinko

+0

분명히 당신은 할 수 없습니다. 그러나 응용 프로그램이 시작될 때 Assembly.Load()를 사용하여 dll을 검사하기 위해 프레임 워크가 기다리는 것이 아니라 메모리에서 필요한 dll을로드 할 수 있습니다. 확실하지 않지만. – Prash

+0

지금 알 수 있듯이 'cli_uno.dll'은 내 응용 프로그램의 일부가 아니고 LO 설치이며 내 응용 프로그램에서 호출 한 응용 프로그램 어셈블리 버전 설정을 제어하지 않습니다. 나는 질문을 updatew. – yaapelsinko

관련 문제