在Mono中使用Novell.Directory.Ldap(适用于Android和Touch)
我想在MonoTouch和Mono For Android项目中使用Novell.Directory.Ldap库。 当我在iOS模拟器modus中编译我的项目时,它编译时没有错误并且运行正确(在iOS模拟器中) 当我在iOS设备modus中编译我的项目(用物理设备测试应用程序)时,我遇到以下错误:在Mono中使用Novell.Directory.Ldap(适用于Android和Touch),mono,xamarin.ios,ldap,xamarin.android,novell,Mono,Xamarin.ios,Ldap,Xamarin.android,Novell,我想在MonoTouch和Mono For Android项目中使用Novell.Directory.Ldap库。 当我在iOS模拟器modus中编译我的项目时,它编译时没有错误并且运行正确(在iOS模拟器中) 当我在iOS设备modus中编译我的项目(用物理设备测试应用程序)时,我遇到以下错误: Error MT2002: Failed to resolve "System.Void System.Security.Cryptography.RNGCryptoServiceProvider:
Error MT2002: Failed to resolve "System.Void System.Security.Cryptography.RNGCryptoServiceProvider::.ctor(System.Byte[])" reference from "mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" (MT2002) (MyProject)
我怎样才能解决这个问题?我找不到解决办法
该库是否适用于MonoTouch和Android?
Mono是否有更好的LDAP解决方案
更新:我刚刚用Android版的Mono进行了测试。这很好。里面有三个问题,所以我把答案分成三部分。请全部阅读:-) 我怎样才能解决这个问题 这是一个普遍的问题,有一个普遍的解决办法 您编译的代码包含对mscorlib的引用,版本=1.0.5000.0 这可能是因为您没有使用Xamarin.iOS(MonoTouch)(名为
smcs
)提供的编译器来构建程序集。该编译器将设置引用以使用正确的mscorlib.dll
程序集(并报告移动配置文件中缺少的任何内容)
它可以为Xamarin.Android工作的事实是它使用了JIT(即时编译),因此在运行时之前不会找到缺少的成员(如果执行达到该代码)
OTOH Xamarin.iOS使用AOT(提前编译),因为(苹果)不允许在设备上使用JIT。这意味着在构建时发现缺少的成员。在这种情况下,(托管)链接器无法找到引用并发出MT2002错误
因此,解决方案是使用SMC
重新构建程序集,并修复(如果有)构建时错误。例如,RNGCryptoServiceProvider
ctor的IIRC不可用(由于无法进行种子设定,因此不执行任何操作),应使用默认的ctor替换
该库是否适用于MonoTouch和Android
应该是这样。但是,我个人在Novell.Directory.Ldap
方面的经验不是很好(代码和设计问题,例如线程,特别是启用SSL的情况)
另外,代码已经有一段时间没有更新了。您最好根据自己的LDAP需求寻找(托管或本机)替代方案
Mono是否有更好的LDAP解决方案
遗憾的是,我没有使用过任何其他类似的库,因此我无法提出替代方案(但也许其他人可以提供帮助)。问题已经解决
我没有使用Novell的dll,而是下载了Novell LDAP库的所有源文件,并将它们放入一个新的库项目中。然后,我从自己的Mono项目中引用了该库
在编译我的项目和库项目时,我从库项目收到一些错误。手动解决这些错误后,它对这两个项目都很好(MonoTouch和Mono for Android).尝试alpha频道的更新,他们为Xamarin推出了新的mono版本。iOSI刚刚更新了所有最新的alpha更新,但没有解决问题。还有其他建议吗?