我正在尝试使用mkbundle,以便我可以分发GTK#应用程序,而无需用户安装.NET/Mono或GTK#。我已经成功捆绑了一个使用winforms的应用程序,但由于某种原因,当我对GTK#应用程序进行相同操作时,它将无法工作。mkbundle和GTK#
这是我走出的Cygwin:
$ mkbundle --deps a.exe OS is: Windows Sources: 1 Auto-dependencies: True
未处理的异常:System.IO.FileNotFoundException:未能加载文件或程序集“GTK锋利”或它的一个依赖。该系统找不到指定的文件。
文件名: 'GTK的尖锐'
在System.AppDomain.Load(System.Reflection.AssemblyName assemblyRef,System.Security.Policy.Evidence assemblySecurity)[0x00000]在:0
在(包装远程-invoke- (System.AppDomain:Load(System.Reflection.AssemblyName,System.Security.Policy.Evidence)
at System.AppDomain.Load(System.Reflection.AssemblyName assemblyRef)[0x00000] in:0
at(包装远程-调用与 - 检查)System.AppDomain:载荷(System.Reflection.AssemblyName)
在System.Reflection.Assembly.Load(System.Reflection.AssemblyName assemblyRef)[0x00000]在0到M
akeBundle.QueueAssembly(System.Collections.ArrayList files,System.String codebase)[0x00000] in:0
at MakeBundle.Main(System.String [] args)[0x00000] in:0
[ERROR] FATAL UNHANDLED EXCEPTION :System.IO.FileNotFoundException:无法加载文件或程序集“gtk-sharp”或其某个依赖项。该系统找不到指定的文件。
文件名: 'GTK的尖锐'
在System.AppDomain.Load(System.Reflection.AssemblyName assemblyRef,System.Security.Policy.Evidence assemblySecurity)[0x00000]在:0
在(包装远程-invoke- (System.AppDomain:Load(System.Reflection.AssemblyName,System.Security.Policy.Evidence)
at System.AppDomain.Load(System.Reflection.AssemblyName assemblyRef)[0x00000] in:0
at(包装远程-调用与 - 检查)System.AppDomain:载荷(System.Reflection.AssemblyName)
在System.Reflection.Assembly.Load(System.Reflection.AssemblyName assemblyRef)[0x00000]在0到M
akeBundle.QueueAssembly(System.Collections.ArrayList文件,代码库System.String)[0x00000]在:0
在MakeBundle.Main(System.String []参数)[0x00000]中:0`
但但我的PATH变量中有/cygdrive/c/GtkSharp/2.12/lib。我可以检查这一点,因为如果我输入“GTK的sharp.dll”进入cygwin的我碰到下面的返回:
$ gtk-sharp.dll bash: /cygdrive/c/GtkSharp/2.12/lib/gtk-sharp-2.0/gtk-sharp.dll: cannot execute binary file
所以它应该是能够找到的文件!
任何帮助将不胜感激。
尝试给mkbundle每个程序集的完整路径 – IanNorton
mkbundle带回“找不到程序集”/cygdrive/c/GtkSharp/2.12/lib/gtk-sharp-2.0/gtk-sharp.dll'为什么不能mkbundle只是工作! – Joe