Nano Hash - криптовалюты, майнинг, программирование

Плагин Outlook 2007 не загружается (неправильное время выполнения)

Я создал плагин для Outlook 2007, который мне удалось установить в Windows 7 с помощью проекта установки в Visual Studio 2010. Он отлично работал на каждой машине с Windows 7, на которой я его установил. Я ранее успешно установил его на двух машинах XP, но у меня возникли проблемы с одним экземпляром XP, который находится на виртуальной машине.

AddInSpy показывает, что эту надстройку не удалось загрузить в Outlook, потому что не удалось загрузить одну из своих зависимостей:

Add-in DLL path is not found. System.BadImageFormatException: Could not load file or assembly 'file:///C:\Program Files\blah\blah\MyAddIn.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

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

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

Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
...
Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config

Я установил клиентский профиль .NET 4 (который предназначен для использования плагином) и расширил его на этом компьютере, но, судя по журналам, он пытается использовать .NET 2. Я также установил среду выполнения VSTO2010 и первичное взаимодействие Office 2007. Сборки.

Итак, я предполагаю, что мои вопросы: почему он пытается использовать .NET2? как заставить его использовать .NET4? и как я могу убедиться, что мой установщик использует правильную версию?


Ответы:


1

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

Это основное сообщение об ошибке. Вы ведете битву с другим плагином, который загружается в Outlook, и проиграли гонку. Он был первым и загрузил CLR версии 2. Ваш надстройка может работать только с CLR версии 4.

Одно из исправлений - удалить эту надстройку. Другой - заставить Outlook всегда загружать CLR версии 4. У которого есть функция, которой нет в версии 2, она позволяет загружать более одной среды CLR. Для этого требуется файл outlook.exe.config в каталоге Office. Возможно, он уже существует (не уверен), поэтому отредактируйте существующий, если найдете его. Он должен содержать следующие записи:

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>
10.05.2012
  • Спасибо за совет. @Hans Passant: я попытался создать файл outlook.exe.config и поместил его в тот же каталог, что и outlook.exe и outlook.exe.manifest, который является каталог office12. У меня все еще та же проблема. Я каждый раз устанавливаю для LoadBehavior значение 3 в реестре, потому что, когда я пытаюсь открыть Outlook, он снова устанавливает значение 2. 11.05.2012
  • журнал говорит: LOG: Where-ref bind. Location = C:\Program Files\Microsoft\Setup1\TestAddIn.dll LOG: Appbase = file:///C:/Program Files/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/Setup1/TestAddIn.dll. ERR: Failed to complete setup of assembly (hr = 0x8013101b). Probing terminated. 11.05.2012
  • Хост: Outlook, Запуск: ЛОЖЬ, Загружен: ЛОЖЬ, Тип: VSTO, FriendlyName: Понятное имя тестового дополнения, ProgID: MyTestAddin, CLSID: нет данных, Манифест: C: \ Program Files \ Microsoft \ Setup1 \ TestAddIn.vsto | vstolocal, DllPath: C: \ Program Files \ Microsoft \ Setup1 \ TestAddIn.dll, LoadBehavior: 3, RegHive: HKCU, AssemblyName:?, CLR_version:?, Exposed: FALSE, Interfaces:?, FormRegions:?, VSTOR: 2008, Установлено:?, PubVer: нет, Статус: Предупреждение 11.05.2012
  • ЖУРНАЛ: файл конфигурации приложения не найден. 11.05.2012
  • Да, но я не думал, что это необходимость. В нем говорится, что используется machine.config, который используется по умолчанию, когда другие конфигурации не существуют. Тем не менее, он ищет в папке .NET 2.0.50727. 14.05.2012
  • Использование machine.config и взлом всех программ .NET 2 и 3.x звучит как чрезмерно плохая идея. Я хорошо представляю, что CLR активно этому препятствует. Пожалуйста, сделайте то, что я рекомендовал. 15.02.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..