C# 我能';无法部署我的mono应用程序,因为DllNotFoundException
当我尝试使用以下命令运行mono应用程序时:C# 我能';无法部署我的mono应用程序,因为DllNotFoundException,c#,mono,C#,Mono,当我尝试使用以下命令运行mono应用程序时: mono SimpleBrowser.exe 我的Mac电脑出现以下错误: Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Gtk.Application ---> System.DllNotFoundException: glibsharpglue-2 at (wra
mono SimpleBrowser.exe
我的Mac电脑出现以下错误:
Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Gtk.Application ---> System.DllNotFoundException: glibsharpglue-2
at (wrapper managed-to-native) GLib.Thread:glibsharp_g_thread_supported ()
at GLib.Thread.get_Supported () [0x00000] in <filename unknown>:0
at Gtk.Application..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at SimpleBrowser.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 [ERROR]
FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for Gtk.Application ---> System.DllNotFoundException: glibsharpglue-2
at (wrapper managed-to-native) GLib.Thread:glibsharp_g_thread_supported ()
at GLib.Thread.get_Supported () [0x00000] in <filename unknown>:0
at Gtk.Application..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at SimpleBrowser.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0
未处理的异常:System.TypeInitializationException:Gtk.Application的类型初始值设定项引发异常-->System.DllNotFoundException:glibsharpglue-2
at(包装器管理为本机)GLib.Thread:glibsharp\u g\u Thread\u受支持()
0中的GLib.Thread.get_Supported()[0x00000]
在Gtk.Application..cctor()[0x00000]中:0
---内部异常堆栈跟踪的结束---
在SimpleBrowser.MainClass.Main(System.String[]args)[0x00000]中:0[错误]
致命的未处理异常:System.TypeInitializationException:Gtk的类型初始值设定项引发异常。应用程序-->System.DllNotFoundException:glibsharpglue-2
at(包装器管理为本机)GLib.Thread:glibsharp\u g\u Thread\u受支持()
0中的GLib.Thread.get_Supported()[0x00000]
在Gtk.Application..cctor()[0x00000]中:0
---内部异常堆栈跟踪的结束---
在:0中的SimpleBrowser.MainClass.Main(System.String[]args)[0x00000]处
我尝试在Mac上搜索丢失的glibsharpglue-2库,但找不到。我不确定问题出在哪里,因为当我从Monodevelop启动应用程序时,应用程序会运行。来自一个有类似问题的博客条目:编辑:更新链接: 这里的问题是缺少环境变量。我这样修改了/etc/profile(第二行和第三行应该在同一行,没有点,我只是将其分解以适合页面):
export MONO\u FRAMEWORK\u PATH=/Library/Frameworks/MONO.FRAMEWORK/Versions/Current
export DYLD\u FALLBACK\u LIBRARY\u PATH=“$MONO\u FRAMEWORK\u PATH/lib:。。。
…$DYLD\u FALLBACK\u LIBRARY\u PATH:/usr/local/lib:/usr/lib“
来自具有类似问题的博客条目:编辑:更新链接:
这里的问题是缺少环境变量。我这样修改了/etc/profile(第二行和第三行应该在同一行,没有点,我只是将其分解以适合页面):
export MONO\u FRAMEWORK\u PATH=/Library/Frameworks/MONO.FRAMEWORK/Versions/Current
export DYLD\u FALLBACK\u LIBRARY\u PATH=“$MONO\u FRAMEWORK\u PATH/lib:。。。
…$DYLD\u FALLBACK\u LIBRARY\u PATH:/usr/local/lib:/lib:/usr/lib“
在执行应用程序之前,需要设置此环境变量:
export DYLD\u FALLBACK\u LIBRARY\u PATH=“/LIBRARY/Frameworks/Mono.framework/Versions/Current/lib:/usr/local/lib:/usr/lib”
由于每次执行应用程序时都很难做到这一点,因此您应该创建一个包装器脚本来为您完成此操作:
#/bin/bash
export DYLD\u FALLBACK\u LIBRARY\u PATH=“/LIBRARY/Frameworks/Mono.framework/Versions/Current/lib:/usr/local/lib:/usr/lib”
mono SimpleBrowser.exe“$@”
这只是一个简单的示例,这里有一个更高级的示例:
#/bin/bash
MONO_FRAMEWORK=/Library/Frameworks/MONO.FRAMEWORK/Versions/Current/
export DYLD\u FALLBACK\u LIBRARY\u PATH=“$MONO\u FRAMEWORK/lib:/usr/local/lib:/usr/lib”
EXE_DIR=`dirname$0`
$MONO_FRAMEWORK/MONO$MONO_OPTIONS$EXE_DIR/SimpleBrowser.EXE“$@”
您所要做的就是确保脚本与执行它的可执行文件位于同一目录中。它允许您将选项传递给mono(例如--debug)。mono通常就是这样做的(例如,
cat/usr/bin/mkbundle
),它位于。在执行应用程序之前,您需要设置此环境变量:
export DYLD\u FALLBACK\u LIBRARY\u PATH=“/LIBRARY/Frameworks/Mono.framework/Versions/Current/lib:/usr/local/lib:/usr/lib”
由于每次执行应用程序时都很难做到这一点,因此您应该创建一个包装器脚本来为您完成此操作:
#/bin/bash
export DYLD\u FALLBACK\u LIBRARY\u PATH=“/LIBRARY/Frameworks/Mono.framework/Versions/Current/lib:/usr/local/lib:/usr/lib”
mono SimpleBrowser.exe“$@”
这只是一个简单的示例,这里有一个更高级的示例:
#/bin/bash
MONO_FRAMEWORK=/Library/Frameworks/MONO.FRAMEWORK/Versions/Current/
export DYLD\u FALLBACK\u LIBRARY\u PATH=“$MONO\u FRAMEWORK/lib:/usr/local/lib:/usr/lib”
EXE_DIR=`dirname$0`
$MONO_FRAMEWORK/MONO$MONO_OPTIONS$EXE_DIR/SimpleBrowser.EXE“$@”
您所要做的就是确保脚本与执行它的可执行文件位于同一目录中。它允许您将选项传递给mono(例如--debug)。mono通常就是这样做的(例如,
cat/usr/bin/mkbundle
),它位于。这个/etc/profile文件的确切位置。我所拥有的一个没有上面所示的语句。有没有一种方法可以从MonoDevelop IDE本身中进行这些更改?谢谢,但是我的版本默认安装了monoMac。我无法编辑配置文件,因为它已锁定:/n是否有办法解决此问题。抱歉,我对Mac开发非常陌生。请尝试sudo open-a text编辑/etc/profile
。我实际上并不使用Mac电脑,如果您不想为所有用户这样做,您也可以在您的~/.profile
中这样做。只有在从命令行运行时才需要env变量,而不是在MonoDevelop IDE中运行。这个/etc/profile文件的确切位置是什么。我所拥有的一个没有上面所示的语句。有没有一种方法可以从MonoDevelop IDE本身中进行这些更改?谢谢,但是我的版本默认安装了monoMac。我无法编辑配置文件,因为它已锁定:/n是否有办法解决此问题。抱歉,我对Mac开发非常陌生。请尝试sudo open-a text编辑/etc/profile
。我实际上并不使用Mac电脑,如果您不想为所有用户这样做,您也可以在您的~/.profile
中这样做。只有在从命令行运行时才需要env变量,而不是在MonoDevelop IDE中。这正是我所需要的。谢谢将env添加到我的.profile中。谢谢,不过我需要$MO