C# 在UWP应用程序的完全信任win32组件中使用.NET标准库时引发FileNotFoundException(无法加载文件或程序集)

C# 在UWP应用程序的完全信任win32组件中使用.NET标准库时引发FileNotFoundException(无法加载文件或程序集),c#,winforms,uwp,.net-standard-2.0,C#,Winforms,Uwp,.net Standard 2.0,我的域逻辑在.NET标准库中。我试图在UWP应用程序中定义的完全信任win forms托盘组件中使用它。我的域逻辑库在UWP项目和win forms项目中都有引用。 现在,如果我在系统托盘中启动win forms应用程序作为完全信任进程,并调用域逻辑,它会抛出FileNotFoundException,表示找不到添加到我的“域逻辑”库中的nuget包。但是,如果我单独启动forms应用程序,它会正确执行。根据答案,我在构建后事件中添加了复制任务,并且复制的DLL也包含在项目中 下面是一个重现上述

我的域逻辑在.NET标准库中。我试图在UWP应用程序中定义的完全信任win forms托盘组件中使用它。我的域逻辑库在UWP项目和win forms项目中都有引用。 现在,如果我在系统托盘中启动win forms应用程序作为完全信任进程,并调用域逻辑,它会抛出FileNotFoundException,表示找不到添加到我的“域逻辑”库中的nuget包。但是,如果我单独启动forms应用程序,它会正确执行。根据答案,我在构建后事件中添加了复制任务,并且复制的DLL也包含在项目中

下面是一个重现上述问题的例子。自述文件包含重现该问题的简要说明。如何修复正在抛出的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)
最初,未将nuget软件包DLL复制到SystrayComponent的bin文件夹中。我按照发布的解决方法修复了它。即使在那之后,我也得到了提到的例外

由于调试器无法附加到win32对应程序,所以我已将抛出的任何异常记录在app sandbox localstate文件中
C:\Users\YourUserName\AppData\Local\Packages\UWPwithSystrayextension\u brppa21vfw7f4\LocalState\Log.txt

除了包含exe文件外,还需要包含
DomainLogic.dll
文件

请在
UWP Systray master\SystrayComponent\bin\Debug
中找到
DomainLogic.dll
文件,并将其添加到
Win32
文件夹中

在VisualStudio中添加“包含在项目中”之后


谢谢

我已经更新了问题。现在,当库中引用了任何nuget包时,我得到了一个FileNotFound。我还将它们复制到win32文件夹post build中,并包含在项目中。对不起,您的意思是您已经解决了此问题,还是复制dll后仍无法工作?对不起,我没有复制此问题。当我单击执行域逻辑时,没有错误消息。您可以尝试清洁溶液并重新生成。(或者将您的项目作为新项目从github下载并运行)您是否已完成最新提交?它将在C:\Users\YourUserName\AppData\Local\Packages\UWPwithSystrayextension\u brppa21vfw7f4\LocalState\log.txt中的日志文件中生成。在这种情况下,它是由引用的nuget包的版本与使用的dll文件的版本不匹配引起的。在
DomainLogic
项目中,引用的
Microsoft.Extensions.DependencyInjection
是3.1.3的版本,dll是3.1.0。只是你需要降级。但即使解决了这个问题,您仍然需要添加其他引用的dll文件,这有点太复杂了。目前建议您在Windows窗体项目中的类库中写入代码,并在项目完成后考虑迁移。