Добрый день, помогите разобраться с проблемой
Имеется сборка InclMaker.exe (1), скомпилированная в VS8 и использующая Framework v2.0.50727
Имеется сборка ImpExcelBuffer.dll(2),которая должна получить некоторый тип из сборки 1, загрузив ее. Сборка 2
оформлена в виде СОМ-объекта ( для того, чтобы создаеть его из скрипта Excel )
Проблема заключается в том, что если сборка 2 сомпилирована в VS8 под Framework v2.0.50727, то при создании
COM-объекта из Excel происходит ошибка — сборка не найдена.
Просмотрев лог, увидел следующее:
*** Assembly Binder Log Entry (08.08.2006 @ 14:09:24) ***
The operation failed.
Bind result: hr = 0x80070002. Не удается найти указанный файл.
Assembly manager loaded from: E:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\fusion.dll
Running under executable E:\Program Files\Microsoft Office 2003\OFFICE11\EXCEL.EXE
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: DisplayName = ImpExcelBuffer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2a3fd0cb75517b09
(Fully-specified)
LOG: Appbase = E:\Program Files\Microsoft Office 2003\OFFICE11\
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : (Unknown).
===
LOG: Processing DEVPATH.
LOG: DEVPATH is not set. Falling through to regular bind.
LOG: Attempting application configuration file download.
LOG: Download of application configuration file was attempted from
file:///E:/Program Files/Microsoft Office
2003/OFFICE11/EXCEL.EXE.config.
LOG: Application configuration file does not exist.
LOG: Publisher policy file is not found.
LOG: Host configuration file not found.
LOG: Using machine configuration file from E:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\config\machine.config.
LOG: Post-policy reference: ImpExcelBuffer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2a3fd0cb75517b09
LOG: Cache Lookup was unsuccessful.
LOG: Attempting download of new URL
file:///E:/Program Files/Microsoft Office 2003/OFFICE11/ImpExcelBuffer.DLL.
LOG: Attempting download of new URL
file:///E:/Program Files/Microsoft Office
2003/OFFICE11/ImpExcelBuffer/ImpExcelBuffer.DLL.
LOG: Attempting download of new URL
file:///E:/Program Files/Microsoft Office 2003/OFFICE11/ImpExcelBuffer.EXE.
LOG: Attempting download of new URL
file:///E:/Program Files/Microsoft Office
2003/OFFICE11/ImpExcelBuffer/ImpExcelBuffer.EXE.
LOG: All probing URLs attempted and failed.
,а также:
*** Assembly Binder Log Entry (08.08.2006 @ 14:09:24) ***
The operation failed.
Bind result: hr = 0x80131107. No description available.
Assembly manager loaded from: E:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\fusion.dll
Running under executable E:\Program Files\Microsoft Office 2003\OFFICE11\EXCEL.EXE
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: Where-ref bind. Location =
E:/WINDOWS/assembly/GAC_MSIL/ImpExcelBuffer/1.0.0.0__2a3fd0cb75517b09/ImpExcelBuffer.dll
LOG: Appbase = E:\Program Files\Microsoft Office 2003\OFFICE11\
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : (Unknown).
===
LOG: Processing DEVPATH.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL
file:///E:/WINDOWS/assembly/GAC_MSIL/ImpExcelBuffer/1.0.0.0__2a3fd0cb75517b09/ImpExcelBuffer.dll.
LOG: Assembly download was successful. Attempting setup of file:
E:\WINDOWS\assembly\GAC_MSIL\ImpExcelBuffer\1.0.0.0__2a3fd0cb75517b09\ImpExcelBuffer.dll
LOG: Entering run-from-source setup phase.
ERR: Error extracting manifest import from file (hr = 0x80131107).
ERR: Failed to complete setup of assembly (hr = 0x80131107). Probing terminated.
Похоже, используется загрузчик сборок предыдущей версии — v1.1.4322\fusion.dll (эта версия Framework
тоже установлена). В первом случае не может найти сборку в GAC, во втором не может прочитать ее манифест. Если я
создаю этот COM-объект из приложения на неуправляемом С++, то используется загрузчик нужной версии и все
работает. Я пробовал компилировать ImpExcelBuffer.dll на VC7 под v1.1.4322. В этом случае СОМ-объект из Excel
создается, но из него я не могу получить тип, который находится в сборке InclMaker.exe(v2.0.50727), т.к. не могу ее
загрузить — тоже не удается прочитать манифест.
Как можно решить эту проблему?Можно ли как — то обязать Excel использовать загрузчик сборок из Framework v2.0.50727?