Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 引用可移植类库的Prism模块_.net_Wpf_Prism_Portable Class Library_Modularity - Fatal编程技术网

.net 引用可移植类库的Prism模块

.net 引用可移植类库的Prism模块,.net,wpf,prism,portable-class-library,modularity,.net,Wpf,Prism,Portable Class Library,Modularity,所以我有一个WPF应用程序,它使用Prism Composition来处理模块化。我的一个包含Prism IModule的库引用了一个可移植类库。当我尝试运行WPF应用程序时,出现以下异常: Microsoft.Practices.Prism.Composition.dll中发生类型为“System.IO.FileNotFoundException”的未处理异常 无法加载文件或程序集“System.Runtime,Version=4.0.10.0,Culture=neutral,PublicKe

所以我有一个WPF应用程序,它使用Prism Composition来处理模块化。我的一个包含Prism IModule的库引用了一个可移植类库。当我尝试运行WPF应用程序时,出现以下异常:

Microsoft.Practices.Prism.Composition.dll中发生类型为“System.IO.FileNotFoundException”的未处理异常 无法加载文件或程序集“System.Runtime,Version=4.0.10.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件

这发生在我的UntiyBootstrapper实现的初始化模块中。我很确定这是因为Prism正在尝试加载包含我的Prism IModule的库的所有依赖项,但我不太明白为什么它找不到该依赖项。到目前为止,我已经尝试重新安装Windows8.1SDK,因为我读到了DLL应该驻留的地方

以前有没有其他人遇到过这种情况,或者有什么建议


更新:我发现如果我从以下位置复制System.Runtime.dll:“C:\Program Files(x86)\Reference Assembly\Microsoft\Framework.NETCore\v4.5.1”,并将其放置在与WPF exe相同的位置,则一切都会正常运行。我不太明白为什么Prism库不能加载这个DLL。这是否是Prism的一个限制,因为我在GAC中没有看到System.Runtime.dll,那么这种依赖关系通常是如何解决的?

如果您创建一个wpf应用程序,然后引用另一个库,并且该库依赖于另一个库,那么我不认为它的Prism。然后,您的主wpf应用程序需要同时引用这两个库。

如果您创建一个wpf应用程序,然后引用另一个库,并且该库依赖于另一个库,则我认为它的棱柱体不存在。然后,您的主wpf应用程序需要同时引用这两个文件。

根据我的研究,在Prism库中,除了从“C:\Program Files(x86)\reference Assembly\Microsoft\Framework.NETCore\v4.5.1”复制虚拟DLL之外,似乎没有办法绕过此限制。虽然这对开发有用,但对于部署来说,这不是一个实用的选项,因此我决定将PCL恢复为标准类库


我得出这个结论是因为在使用反编译器之后,我看到我指定的目标的System.Runtime.dll都被设置为PCL中的引用,而且Prism库似乎只是尝试加载所有依赖项。这对PCL不起作用,因为在任何情况下都会丢失System.Runtime.DLL中的一个。

根据我的研究,在Prism库中,除了从“C:\Program Files(x86)\Reference Assembly\Microsoft\Framework.NETCore\v4.5.1”复制虚拟DLL之外,没有其他方法可以绕过此限制。虽然这对开发有用,但对于部署来说,这不是一个实用的选项,因此我决定将PCL恢复为标准类库


我得出这个结论是因为在使用反编译器之后,我看到我指定的目标的System.Runtime.dll都被设置为PCL中的引用,而且Prism库似乎只是尝试加载所有依赖项。这不适用于PCL,因为在任何情况下都会缺少System.Runtime.dll中的一个。

我遇到的问题与Prism和可移植类库组合有关,因为当您为多个目标编译PCL时,它将引用这些目标之间不同的任何DLL。在我的例子中,我看到了对两个System.Runtime DLL的引用,它们分别是4.0.0.0版本和4.0.10.0版本。我相信这会导致Prism出现问题,因为它试图同时加载这两个,并且在任何给定的目标上只会存在其中一个。我想知道的是,除了将虚拟dll放入输出目录之外,是否还有其他解决方法。我遇到的问题与Prism和可移植类库的组合有关,因为当您为多个目标编译PCL时,它将引用这些目标之间不同的任何dll。在我的例子中,我看到了对两个System.Runtime DLL的引用,它们分别是4.0.0.0版本和4.0.10.0版本。我相信这会导致Prism出现问题,因为它试图同时加载这两个,并且在任何给定的目标上只会存在其中一个。我想知道的是,除了将虚拟dll放入输出目录之外,是否还有其他解决方法。是否安装了ReSharper?当您搁置或取消搁置更改时,这是Resharper的一个已知问题。不,我没有。当我尝试运行使用Prism库动态加载模块的项目时,会发生此错误。是否安装了ReSharper?当您搁置或取消搁置更改时,这是Resharper的一个已知问题。不,我没有。当我尝试运行使用Prism库动态加载模块的项目时,会发生此错误。