所以我有一个使用Prism Composition来处理模块化的WPF应用程序。我的一个包含我的Prism IModule的库引用了一个可移植类库。当我尝试运行我的WPF应用程序时,我得到以下异常:
Microsoft.Practices.Prism.Composition.dll中发生未处理的“System.IO.FileNotFoundException”类型异常 无法加载文件或程序集'System.Runtime,Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件。
这发生在我的 UntiyBootstrapper 实现的 InitializeModules 中。我很确定这是因为Prism正在尝试加载包含我的Prism IModule的库的所有依赖项,但我不太明白为什么它找不到这种依赖。到目前为止,我已经尝试重新安装Windows 8.1 SDK,因为我读到了DLL应该驻留的位置。
之前是否还有其他人遇到此问题或有任何建议?
更新:我发现如果我从这个位置复制System.Runtime.dll:“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETCore \ v4.5.1”并将其放在同一位置位置作为我的WPF exe然后一切运行正常。我不太明白为什么Prism库无法加载这个DLL。这是Prism的限制,因为我没有在GAC中看到System.Runtime.dll,那么该依赖关系通常是如何解决的?
答案 0 :(得分:0)
我不认为它的Prism,如果你创建一个wpf应用程序,然后引用一个不同的库,并且该库依赖于另一个库。然后你的主要wpf应用程序需要引用它们。
答案 1 :(得分:0)
从我的研究中可以看出,除了从" C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETCore \ v4复制虚拟DLL之外,Prism库中没有办法解决这个限制。 1.5.1&#34 ;.虽然这适用于开发,但它不适合部署,因此我决定将我的PCL恢复为标准类库。
我得出结论是因为在使用反编译器之后,我看到我指定的目标的System.Runtime.dlls都被设置为我的PCL中的引用,看起来Prism库只是尝试加载所有依赖项。这对PCL不起作用,因为在每种情况下都会丢失一个System.Runtime.dlls。