我正在努力让IKVM适用于Windows 10 UWP目标。我正在使用csc.exe编译的代码遇到问题。如果我的目标是.Net 4.0或更高版本,那么我会遇到运行时错误:
Method not found: 'Boolean System.Reflection.Assembly.op_Equality(System.Reflection.Assembly, System.Reflection.Assembly)'.
因为4.0或更高版本支持'=='运算符重载,但显然UWP中的某些程序集不支持此操作。
如果我反而将目标定为.Net< 4.0(例如2.0或3.5),我得到如下错误:
Attempt by method 'IKVM.Internal.AssemblyClassLoader+AssemblyLoader..ctor(System.Reflection.Assembly)' to access method 'System.Reflection.Assembly.GetModules(Boolean)'
我认为这与.net安全性有关,不允许我从“不安全”的程序集中访问“安全”程序集的反射....而且我的程序集被认为是“不安全”,因为它们编译为2.0 / 3.5这比此处的安全模型早。
问题:
如何编译我的C#文件以准确定位UWP应用程序中使用的.Net版本? (构建是通过<csc>
标记的Nant构建文件进行的。
感谢您的任何指示。
更新:
我找到了一种定位UWP的.Net库的方法,那就是为每个IKVM运行时项目制作Visual Studio项目 - 并使用它而不是Nant构建。我仍然想找到一种方法来使用现有的Nant构建文件,但到目前为止它看起来并不像Nant支持为UWP构建。