Не удалось загрузить файл или сборку System.Memory, версия=4.0.1.1, культура=нейтральная,C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Не удалось загрузить файл или сборку System.Memory, версия=4.0.1.1, культура=нейтральная,

Сообщение Anonymous »

TL;DR
Мне было поручено перенести установщик надстройки Office (VSTO) из установщика Windows в WiX.
Как обычно , я создал проект WiX (HearWave), добавил все файлы проекта в xml-конфиг компонента. Но после установки надстройки и запуска Outlook получаю вот такую ​​ошибку:
Could not load file or assembly 'System.Memory, Version=4.0.1.1, Culture=neutral,
PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest
definition does not match the assembly reference. (Exception from HRESULT: 0x80131040).

Установщик Windows работает. Тот же результат, если в проект надстройки не было внесено никаких изменений (кроме добавления WiX).
Вся история
На прошлой неделе мне было поручено перейти с устаревшего установщика Windows на WiX.
Сначала я просто создал копию решения, удалил старый проект установщика и добавил проект WiX. Я продублировал из старого проекта, какие файлы копируются в XML-конфиг компонента.
System.Memory и другие — библиотеки из NuGet. Это одна из зависимостей AngleSharp.
Вот как конфигурация выглядит сейчас (после различных попыток решить проблему):




































...






После изучения выяснилось, что доступ к коду, использующему AngleSharp, приводит к упомянутому выше исключению.
Я пытался решить проблему различными способами. способы, которые я нашел. Что я пробовал:
  • добавить в app.config.
  • переустановить AngleSharp и его зависимости от NuGet
  • библиотеки более ранней версии
  • и другие вещи.

    После того, как ничего не помогло, я решил, что возможно проблема в том, что для нового установщика пришлось редактировать код самого дополнения и добавлять проект с CustomAction.
    Поэтому я сделал еще одну копию оригинального проекта. В него я добавил проект установщика WiX вместе с установщиком Windows, не внося никаких дополнительных изменений в сам проект надстройки.
    В результате, когда я собираю проект установщика Win, надстройка работает должным образом.
    Однако когда я создаю проект WiX, надстройка не работает из-за вышеуказанной ошибки.

    Самое странное то, что при сборке проекта установщика Windows эта ошибка появляется в виде предупреждения в окне вывода, но надстройка работает должным образом. p>
    Но при сборке WiX никаких ошибок или предупреждений не появляется в выходных данных сборки, но надстройка выдает исключение, то же самое, что и показанное предупреждение при сборке Win Installer.
    Журнал сборки Win Installer
    Rebuild started at 1:49 AM...
    Restored C:\GitHub\nophish-outlook-addin-new\SAOA\SAOA.wixproj (in 6 ms).
    1>------ Rebuild All started: Project: nophish, Configuration: Release Any CPU ------
    1> nophish -> C:\GitHub\nophish-outlook-addin-new\bin\Release\nophish.dll
    ------ Starting pre-build validation for project 'Setup' ------
    WARNING: Unable to find dependency 'SYSTEM.RUNTIME.COMPILERSERVICES.UNSAFE' (Signature='B03F5F7F11D50A3A' Version='4.0.4.1') of assembly 'System.Memory.dll'
    WARNING: Unable to find dependency 'SYSTEM.MEMORY' (Signature='CC7B13FFCD2DDD51' Version='4.0.1.1') of assembly 'AngleSharp.dll'
    WARNING: Unable to find dependency 'SYSTEM.TEXT.ENCODING.CODEPAGES' (Signature='B03F5F7F11D50A3A' Version='6.0.0.0') of assembly 'AngleSharp.dll'
    ------ Pre-build validation for project 'Setup' completed ------
    2>------ Rebuild All started: Project: Setup, Configuration: Release ------
    Building file 'C:\GitHub\nophish-outlook-addin-new\Setup\Release\Setup.msi'...
    Packaging file 'System.Memory.dll'...
    Packaging file ...
    ...
    ...
    ========== Rebuild All: 2 succeeded, 0 failed, 0 skipped ==========
    ========== Rebuild completed at 12:40 AM and took 07.902 seconds ==========

    Журнал сборки Wix
    Rebuild started at 1:47 AM...
    1>------ Rebuild All started: Project: nophish, Configuration: Release Any CPU ------
    Restored C:\GitHub\nophish-outlook-addin-new\SAOA\SAOA.wixproj (in 1 ms).
    1> nophish -> C:\GitHub\nophish-outlook-addin-new\bin\Release\nophish.dll
    2>------ Rebuild All started: Project: SAOA, Configuration: Release x86 ------
    2>SAOA -> C:\GitHub\nophish-outlook-addin-new\SAOA\bin\x86\Release\SAOA.msi
    ========== Rebuild All: 2 succeeded, 0 failed, 0 skipped ==========
    ========== Rebuild completed at 1:47 AM and took 06.122 seconds ==========

    Я не знаю, что еще я могу сделать, и не могу найти ничего полезного. Есть идеи?
    В проекте также используется версия System.Memory v4.5.5 в nuget и v4.0.1.2 (справочная версия). И об исключении сообщается v4.0.1.1 (это v4.5.4 в nuget, если я не ошибаюсь), которая никогда не упоминается ни в одном файле проекта.
    UPD
    В ответ на комментарий Майкла Лю.
    Файлы DIFF
    Единственное отличие в дереве файлов — это nophihs.InstallState файл. Но я предполагаю, что это остатки Win Installer.
    Я написал простой пакетный скрипт для сравнения файлов с помощью fc. Есть:
  • разницы в ссылках нет;
  • разница в nophihs.dll 37 байт
    различия в nophihs.dll.manifest и nophihs.vsto, поскольку используется подписывание.
< h2>.NET Fusion (загрузка сборки)
По рекомендации Майкла я запустил .NET Fusion (не знал об этом).
Я обнаружил, что когда я устанавливаю надстройку с помощью Wix, она не может найти файл nophihs.dll.config. Несмотря на то, что этот файл конфигурации существует.
Этот файл не является частью пакета. Он копируется после завершения процесса установки, так как содержит пользовательские настройки.
Этот файл идентичен для обоих установщиков:
Checking file: C:\Program Files\nophihs\nophihs.dll.config
Comparing with: C:\Program Files (x86)\nophihs\nophihs.dll.config
Comparing text files: nophihs.dll.config
Comparing files C:\PROGRAM FILES\NOPHIHS\nophihs.dll.config and C:\PROGRAM FILES (X86)\NOPHIHS\NOPHIHS.DLL.CONFIG
FC: no differences encountered

Викс
*** Assembly Binder Log Entry (9/5/2024 @ 10:32:52 PM) ***

The operation failed.
Bind result: hr = 0x80131040. No description available.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE
--- A detailed error log follows.

=== Pre-bind state information ===
LOG: DisplayName = System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
(Fully-specified)
LOG: Appbase = file:///c:/Program Files (x86)/nophihs/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = OUTLOOK.EXE
Calling assembly : AngleSharp, Version=1.1.2.0, Culture=neutral, PublicKeyToken=e83494dcdc6d31ea.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///c:/Program Files (x86)/nophihs/System.Memory.DLL.
LOG: Assembly download was successful. Attempting setup of file: c:\Program Files (x86)\nophihs\System.Memory.dll
LOG: Entering download cache setup phase.
LOG: Assembly Name is: System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: The assembly reference did not match the assembly definition found.
ERR: Setup failed with hr = 0x80131040.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

Установщик Win
*** Assembly Binder Log Entry (9/5/2024 @ 10:35:13 PM) ***

The operation was successful.
Bind result: hr = 0x0. The operation completed successfully.

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE
--- A detailed error log follows.

=== Pre-bind state information ===
LOG: DisplayName = System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
(Fully-specified)
LOG: Appbase = file:///C:/Program Files/nophihs/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : AngleSharp, Version=1.1.2.0, Culture=neutral, PublicKeyToken=e83494dcdc6d31ea.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Program Files\nophihs\nophihs.dll.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.0.1.1 redirected to 4.0.1.2.
LOG: Post-policy reference: System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Program Files/nophihs/System.Memory.DLL.
LOG: Assembly download was successful. Attempting setup of file: C:\Program Files\nophihs\System.Memory.dll
LOG: Entering download cache setup phase.
LOG: Assembly Name is: System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
LOG: Binding succeeds. Returns assembly from C:\Users\t\AppData\Local\assembly\dl3\DREH4Z3W.5EE\O28WKLDZ.R43\d1ebdddc\005f960a_8c62d801\System.Memory.dll.
LOG: Assembly is loaded in default load context.


Подробнее здесь: https://stackoverflow.com/questions/789 ... re-neutral
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»