[英]DLL Config in Mono
我正在尝试获取Svn.NET( http://www.pumacode.org/projects/svndotnet/ )库,以便在我的Mono项目中使用。 我尝试编译它的ockapp-> svnmockapp项目( http://www.pumacode.org/projects/svndotnet/browser/trunk/SvnMockApp ),我能够正确地引用并正确地进行编译。
我了解它引用了另外两个模块libapr(libapr-1.so.0)和svn_client(libsvn_client-1.so.0),通过它们我在/ bin / Debug中创建了PumaCode.SvnDotNet.dll.config。
这就是我为尝试使模拟应用程序至少输出某些东西以表明它确实与SVN接口所做的所有尝试。 但是,它不起作用。
输入的不与SVN接口的命令可以正常工作:
$ mono SvnTest.exe -usage
Usage: SvnTest <subcommand> [options]
Short Options: ~?.V
Subcommands: add, checkout[co], status[st], update[up]
For help on subcommands, use the -?/--help subcommand option.
尝试访问SVN的命令将引发异常:
$ mono SvnTest.exe st
An exception was thrown by the type initializer for PumaCode.SvnDotNet.AprSharp.Apr
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object
at PumaCode.SvnDotNet.SubversionSharp.SvnMockApp.CmdBase.Run (PumaCode.SvnDotNet.SubversionSharp.SvnMockApp.SubCommand sc, System.String[] args) [0x00000]
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000]
--- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000]
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000]
at PumaCode.SvnDotNet.SubversionSharp.SvnMockApp.Application.Run (System.String[] args) [0x00000]
at PumaCode.SvnDotNet.SubversionSharp.SvnMockApp.Application.Main (System.String[] args) [0x00000]
使用MONO_DEBUG_LEVEL =“ debug”,我们将以下日志粘贴到此处 。
在日志的末尾,我们看到了以下内容:
.
.
.
Mono-INFO: DllImport attempting to load: 'libapr-1'.
Mono-INFO: DllImport loading location: 'libapr-1.so'.
Mono-INFO: DllImport error loading library: 'libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading library: './libapr-1.so'.
Mono-INFO: DllImport error loading library './libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading: 'libapr-1'.
Mono-INFO: DllImport error loading library 'libapr-1: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport attempting to load: 'libapr-1'.
Mono-INFO: DllImport loading location: 'libapr-1.so'.
Mono-INFO: DllImport error loading library: 'libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading library: './libapr-1.so'.
Mono-INFO: DllImport error loading library './libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading: 'libapr-1'.
Mono-INFO: DllImport error loading library 'libapr-1: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport attempting to load: 'libapr-1'.
Mono-INFO: DllImport loading location: 'libapr-1.so'.
Mono-INFO: DllImport error loading library: 'libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading library: './libapr-1.so'.
Mono-INFO: DllImport error loading library './libapr-1.so: cannot open shared object file: No such file or directory'.
Mono-INFO: DllImport loading: 'libapr-1'.
Mono-INFO: DllImport error loading library 'libapr-1: cannot open shared object file: No such file or directory'.
An exception was thrown by the type initializer for PumaCode.SvnDotNet.AprSharp.Apr
我尝试在SvnTest.exe存在的目录中对适当的模块进行符号链接,但这仍然存在。
我怎样才能解决这个问题?
我是否将PumaCode.SvnDotNet.dll.config放在错误的文件夹中? (我将其放在/ bin / Debug并尝试了/ bin)
我该怎么办才能补救?
感谢您的热心帮助! 非常感激!
这是配置文件:
(PumaCode.SvnDotNet.dll.config)
<configuration>
<dllmap dll="libapr" target="/usr/lib/libapr-1.so.0"/>
<dllmap dll="svn_client-1" target="/usr/lib/libsvn_client-1.so.0"/>
</configuration>
您的配置文件没有正确的dll参考。 在日志中,Mono尝试加载libapr-1
库,但是您的配置文件只有libapr
项。 我认为正确的映射应该是:
<configuration>
<dllmap dll="libapr-1" target="/usr/lib/libapr-1.so.0"/>
<dllmap dll="svn_client-1" target="/usr/lib/libsvn_client-1.so.0"/>
</configuration>
通过将dllmap手动添加到/ etc / mono / config来解决它,这不是最好的方法,但至少可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.