棱镜模块引用便携式类库

时间:2015-07-13 17:03:47

标签: .net wpf prism portable-class-library modularity

所以我有一个使用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,那么该依赖关系通常是如何解决的?

2 个答案:

答案 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。