2010-10-06 6 views
11

Наша машина развитие 64 разрядное оборудование работает Windows 7 Professional N (64 бит), 64 бит Office Professional 2010 и Visual Studio Professional 2010Word 2010 надстройка не загружается, VSTO 2010

Мы создали Word 2010 (Add-In) с использованием .NET Framework 4, Ribbons и установщика Windows, ориентированного на Office 2010. Мы следили за всем, начиная с официальных онлайн-уроков MSDN до точки несколько раз. Для нашего установщика мы выбрали клиентский профиль .NET 4 и установщик Windows 3.1 в качестве предварительных условий, поскольку Office 2010 имеет установленную среду исполнения VSTO 4.0, а .NET framework 4 не имеет функциональности PIA. В условиях запуска мы проверили наличие доступности PIA Office 2010 и PIA 2010, используя соответствующие идентификаторы компонентов. Кроме того, мы проверили наличие времени выполнения VSTO, как это изложено в статье MSDN.

Наши надстройки загружаются и выполняются с полной функциональностью только с помощью отладки Visual Studio (F5). При создании проекта установки создается установщик Windows (msi). Установка его устанавливает надстройку на машине без каких-либо ошибок. Однако после установки Add-In, когда мы пытаемся открыть любой Word 2010 документ, мы наблюдаем следующее поведение:

  1. Мы пытаемся открыть любой Microsoft Word 2010 документа, Word 2010 начальный экран показывает вверх, и мы можем см. нашу надстройку, загруженную «Загрузка [Our] Add-In», но затем Word 2010 не открывается. Экран запуска исчезает, и сообщение об ошибке не отображается.

  2. Открытие документа слова во второй раз просто запускает это сообщение (не экрана запуска Word 2010 на этот раз):

    Слово испытывало серьезные проблемы с '[Our] word addin' надстройкой. Если вы видели это сообщение несколько раз, вы должны отключить эту надстройку и проверить, доступно ли обновление. Вы хотите отключить эту надстройку?

    Нажав «Нет», коротко запускается экран запуска Microsoft Word 2010, после чего он снова перестает загружаться (исчезает). Нажав на «Да», открывается Word 2010 с добавлением [Our]. Проверьте, нажав «Параметры файла-Add-In». В соответствии с надписями с надписями с надписями

    Установка и VSTO_LOGALERTS=1 также бесполезна. Мы проверили наш каталог Temp, журналов не было.

  3. Поскольку вышеупомянутый метод не работал, я загрузил образец проекта по этой ссылке с именем 'Deploying a VSTO 2010 solution for Office 2007/2010 using Windows Installer' и использовал соответствующий проект, найденный в Office Development - Setup and Deployment Projects Samples\FX40\AddIn Deployment\All User Install for 64-bit Office.

    Сначала я проверил решение правильно загрузить демонстрационную Excel 2010 проект AddIn путем создания и запуска программы установки (MSI) Затем мы добавили наш проект Слово AddIn к файлу решения по файлу и построил его правильно (CTRL + SHIFT + B). Он даже исходил из отладки Visual Studio (F5) правильно. Затем мы переконфигурировали существующий проект для удаления демонстрационного проекта Excel и загрузили исходный вывод нашего слова Add-In, файлы [OurAdd-In] .vsto и [OurAdd-In] .dll.manifest. Мы обновили зависимости проектов и предприняли соответствующие шаги для исключения соответствующих файлов. Мы проверили целостность реестра и добавили условия запуска для проверки PIA Word 2010.

    Установщик успешно создан и установлен без ошибок, но, к сожалению, мы наблюдаем то же поведение Word 2010, как описано ранее.

Мы также пробовали отладку с помощью регистрации событий Windows. Я нашел это событие с идентификатором события 4096:

************** Exception Text ************** 
Microsoft.VisualStudio.Tools.Applications.Deployment.FrameworkVersionMismatchException: <compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2"> 
<framework targetVersion="4.0" profile="Client" supportedRuntime="4.0.30319" /> 
<framework targetVersion="4.0" profile="Full" supportedRuntime="4.0.30319" /> 
</compatibleFrameworks> 

Нам нужно создать инсталлятор для нашего Слова Add-In для 32-битного и 64-разрядного слова 2010.


Я исследовал дальше, и это то, что я нашел.

Я использовал AddInSpy для дальнейшего изучения, и это отладочная информация я ...

<addIn> 
<Item>1</Item> 
<Host>Word</Host> 
<Running>true</Running> 
<Loaded>false</Loaded> 
<Type>VSTO</Type> 
<FriendlyName>[OURADDIN]WordAddIn</FriendlyName> 
<ProgID>[OURADDIN].WordAddIn</ProgID> 
<CLSID>n/a</CLSID> 
<Manifest>C:\Program Files\Microsoft\[OURADDIN]Setup2010\[OURADDIN]WordAddIn.vsto|vstolocal</Manifest> 
<DllPath>C:\Program Files\Microsoft\[OURADDIN]Setup2010\[OURADDIN]WordAddIn.dll</DllPath> 
<LoadBehavior>3</LoadBehavior> 
<RegHive>HKCU</RegHive> 
<AssemblyName>?</AssemblyName> 
<CLR_version>?</CLR_version> 
<Exposed>false</Exposed> 
<Interfaces>?</Interfaces> 
<FormRegions>n/a</FormRegions> 
<VSTOR>2008</VSTOR> 
<Installed>?</Installed> 
<PubVer>n/a</PubVer> 
<Status>Alert</Status> 
<StatusDescription>Add-in DLL path is not found. System.BadImageFormatException: Could not load file or assembly 'file:///C:\Program Files\Microsoft\[OURADDIN]Setup2010\[OURADDIN].dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded. 
File name: 'file:///C:\Program Files\Microsoft\[OURADDIN]Setup2010\[OURADDIN].dll' 
    at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) 
    at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) 
    at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) 
    at System.Reflection.Assembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, StackCrawlMark& stackMark) 
    at System.Reflection.Assembly.ReflectionOnlyLoadFrom(String assemblyFile) 
    at AddInSpy.AssemblyScanner.GetAssemblyInfo(String fileName, String hostName, Boolean isVstoAddIn) 

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll 
Running under executable C:\Users\Interance\Downloads\AddInSpy\AddInSpy.exe 
--- A detailed error log follows. 

=== Pre-bind state information === 
LOG: User = Interance-PC\Interance 
LOG: Where-ref bind. Location = C:\Program Files\Microsoft\[OURADDIN]Setup2010\[OURADDIN].dll 
LOG: Appbase = file:///C:/Users/Interance/Downloads/AddInSpy/ 
LOG: Initial PrivatePath = NULL 
Calling assembly : (Unknown). 
=== 
LOG: This is an inspection only bind. 
LOG: No application configuration file found. 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config. 
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft/[OURADDIN]Setup2010/[OURADDIN]AddIn.dll. 
ERR: Failed to complete setup of assembly (hr = 0x8013101b). Probing terminated. 
</StatusDescription> 
</addIn> 

Я считаю, что интересно выше, являются следующими строками

Этой сборка построена время выполнения больше, чем текущее загруженное время работы и не может быть загружено ...

Менеджер сборки загружен с: C: \ Windows \ Microsoft.NET \ Fra mework \ v2.0.50727 \ mscorwks.dll

LOG: Использование файла конфигурации машины от C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ config \ machine.config.

В моем понимании Word 2010 пытается загрузить мою Надстройку с помощью диспетчера Сборка и конфигурация машины File, ссылающийся F/W версией v2.0.50727, когда она должна быть ссылками \Framework64\v4.0.30319\, так как я построил свою Надстройку с использованием .NET 4. В результате появляется сообщение об ошибке 'This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded...'

Я думаю, что это может быть источник. Любые мысли, почему это может произойти и как его решить?


Хм ... Я думаю, что следовало бы упомянуть об этом раньше, но я использую Open XML SDK 2 для создания/чтения файлов слово в моем Word 2010 Add-In с .NET F/W 4. I 've последовал за documentation provided here. Если вы прокрутите страницу вниз, вы найдете в разделе Представляем архитектуру формата Open SDK SDK, поддерживающую .NET f/w 3.5, и в настоящее время SDK Open XML Format основан на стандарте Ecma-376.

Кроме того, после нескольких часов щурясь и читать много статей, таких как Chris Rae'sdetailed article, где он утверждает, что Office 2010 использует другой стандарт ISO/IEC 29500, в качестве формата файла по умолчанию, а Office 2007 поддерживает ECMA-376. Далее в нем указывается, что:

ISO/IEC 29500 является прямым потомком ECMA-376. Фактически это так прямо, что ECEM-376 2-е издание идентично ISO/IEC 29500.

Я обнаружил, что поддержка уровня поддержки архитектуры архитектуры Open XML SDK поддерживает .NET f/w 3.5 и в настоящее время Open XML Формат SDK 2 основан на стандарте Ecma-376.

Link for Reference

Поэтому я просто интересно, если Open XML SDK 2 является источником моей проблемы? Поскольку ISO/IEC 29500 является потомком ECMA-376, могу ли я использовать Open XML SDK 2 для создания/изменения документов Word 2010 в моем коде?

Именно поэтому менеджер сборки и файл конфигурации машины загружаются с framework\v2.0.50727\ and not from \Framework64\v4.0.30319\?

+0

+1 для AddInSpy - никогда не знал об этом. –

+0

Согласен. Плюс 1, очень полезно – JohnZaj

ответ

7

Open XML SDK 2 был причиной, я избегал Open XML SDK 2, и моя AddIn работает отлично. Восстановил мой проект с нуля с помощью Microsoft Interop для чтения/записи документов Microsoft Office 2010.

Проблема в том, что для разработчиков не так много документации. Я проделал работу с чтением статей и выяснил проблему самостоятельно.

Надеюсь, другим людям не придется сталкиваться с такими же испытаниями.

+1

Подробные проблемы/решения, подобные этому, заслуживают и повышают! –

0

Возможно, следующая ссылка поможет ... How to create a custom install program.

Это помогло мне, и у меня был несколько схожий сценарий (Word 2010 Addin + Open XML SDK 2.0), развернутый на компьютере, запущенном из Windows XP с пакетом обновления 3 (32-разрядная версия) для Windows 7 Professional 64 бит).

Надеюсь, это поможет вам.

Смежные вопросы