我想在MonoTouch和Mono For Android项目中使用Novell.Directory.Ldap库。 http://www.novell.com/coolsolutions/feature/11204.html
当我在iOS模拟器模式中编译我的项目时,它编译没有错误并正确运行(在iOS模拟器中)。
当我在iOS设备模式中编译项目时(使用物理设备测试应用程序),我收到此错误:
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和Mono For Android? Mono有更好的LDAP解决方案吗?
更新:我刚用Mono For Android测试过它。这很好。
答案 0 :(得分:7)
那里有三个问题,所以我把答案分成了三个。请阅读所有这些内容: - )
我怎么能解决这个问题?
这是解决它的一般解决方案的一般问题。
您编译的代码包含对"mscorlib, Version=1.0.5000.0
这可能是因为您没有使用Xamarin.iOS(MonoTouch)提供的编译器(名为smcs
)来构建程序集。该编译器会将引用设置为使用正确的mscorlib.dll
程序集(并报告MOBILE配置文件中缺少的任何内容)。
可以为Xamarin.Android工作的事实是它使用JIT(只是及时编译),因此在运行时之前找不到缺少的成员(如果执行到达该代码)。
OTOH Xamarin.iOS使用AOT(提前编译),因为在设备上不允许(由Apple)进行JIT。这意味着在构建时发现缺少成员。在这种情况下,(托管)链接器无法找到引用并发出MT2002错误。
所以解决方案是使用smcs
重新构建程序集并修复构建时错误(如果有的话)。例如。 IIRC RNGCryptoServiceProvider
ctor不可用(并且自播种以来什么都不做),应该用默认的ctor替换。
此库是否适用于MonoTouch和Mono For Android?
它应该。但是,Novell.Directory.Ldap
的个人体验不非常好(代码和设计问题,例如线程,特别是启用了SSL)。
此外,代码还没有更新。您可以更好地查看(托管或本机)替代方案以满足您的LDAP需求。
Mono有更好的LDAP解决方案吗?
可悲的是,我没有使用任何其他类似的图书馆,所以我不能建议替代方案(但也许其他人可以提供帮助)。
答案 1 :(得分:3)
问题解决了。
我没有使用Novell的dll,而是下载了Novell LDAP库的所有源文件,并将它们放入新的库项目中。然后我从我自己的Mono项目中引用了该库。
在编译我的项目和库项目时,我收到了来自库项目的一些错误。手动解决这些错误后,它适用于两者(MonoTouch和Android的Mono)。