我正在开发一个具有客户端和服务器的应用程序。每个人通过共享类库共享相似的代码。类库和服务器都依赖于WPF的Color
(在PresentationCore.dll中)和Point
(在WindowsBase.dll中)类。 (但只依赖于这两个WPF类)
服务器和客户端库在Linux上运行Mono就好了,直到执行使用Color
或Point
类的代码,因为WPF没有移植到Mono。
System.IO.FileNotFoundException:无法加载文件或程序集' PresentationCore,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖。
我通过在我的本地计算机上添加自己的PresentationCore.dll
来修复此问题(希望单声道"转置"代码与应用程序一样),这解决了问题,直到颜色上课是必要的。 (但是,点类现在工作正常)
使用颜色类导致:
System.InvalidProgramException:System.Windows.Media.Color中的IL代码无效:Fr omRgb(字节,字节,字节):方法体为空。
我尝试使用extern alias
并实现了颜色类的Mono Moon版本,找到了here。在服务器上使用它,以及客户端上的PresentationCore版本以及每个版本的不同别名在某种程度上有效。它在服务器端工作正常,但是当客户端需要使用包含Color
的对象时,WPF无法将类的Mono版本强制转换为WPF版本。 (我可以自动投射,但后来我会处于相反的情况,客户工作但不是服务器)
无论如何,这是我迄今为止所发现的研究。有一个想法,我试图编译Mono Moon并将其添加到Mono GAC或我的程序目录,虽然我无法弄清楚如何编译它(具体来说,制作"配置"),以及是否它甚至会起作用。
在我的情况下,有没有办法在Mono上使用WPF Color
课程? (不需要WPF框架的其余部分)请记住,包含使用Color类的对象的共享库在客户端和服务器之间共享。