FileNotFoundException (не удалось загрузить файл или сборку), возникающее при использовании стандартной библиотеки. NET в компоненте WinW с полным доверием win32 приложения UWP - PullRequest
0 голосов
/ 06 апреля 2020

У меня доменная логика c в стандартной библиотеке. NET. Я пытаюсь использовать его в компоненте лотка форм полного доверия, определенного в приложении UWP. Библиотека моего домена logi c упоминается как в проекте UWP, так и в проекте выигрышных форм. Теперь, если я запускаю приложение win forms как полный процесс доверия в системном трее и вызываю logi c домена, он выдает исключение FileNotFoundException, в котором говорится, что он не может найти пакеты nuget, добавленные в мою библиотеку 'domain logi c'. Однако, если я запускаю приложение форм отдельно, оно выполняется правильно. Согласно ответу, я добавил задачу копирования в событие после сборки, и скопированные библиотеки также включены в проект.

Вот пример репо для воспроизведения упомянутой проблемы. Файл readme содержит краткое объяснение для воспроизведения проблемы. Как исправить выбрасываемый FileNotFound?

Вот трассировка исключения.

System.TypeInitializationException: The type initializer for 'DIServiceProviderSingleton' threw an exception. ---> System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
   at DomainLogic.DIServiceProvider..ctor()
   at DomainLogic.DIServiceProvider.DIServiceProviderSingleton..cctor()
   --- End of inner exception stack trace ---
   at DomainLogic.DIServiceProvider.get_Instance()
   at SystrayComponent.SystrayApplicationContext.PerformDomainLogic(Object sender, EventArgs e)

Изначально DLL-файлы пакета nuget не были скопированы в папку bin SystrayComponent. Я исправил это, следуя обходному решению, опубликованному здесь . Даже после этого я получаю упомянутое исключение.

Поскольку отладчик не может быть присоединен к аналогу win32, я зарегистрировал любое исключение, выброшенное в локальный файл песочницы приложения C: \ Users \ YourUserName \ AppData \ Local \ Packages \ UWPwithSystrayextension_brppa21vfw7f4 \ LocalState \ Log.txt

1 Ответ

1 голос
/ 07 апреля 2020

Помимо включения exe-файла, вам также необходимо включить файл DomainLogic.dll.

Найдите файл DomainLogic.dll в UWP-Systray-master\SystrayComponent\bin\Debug и добавьте его в папку Win32.

После добавления «Включить в проект» в Visual Studio.

Спасибо

...