我是Mac开发环境中的新手。我安装了Visual Studio for Mac,并创建了一个新的解决方案.NET / Gtk 2.0项目来构建GUI文件重命名工具。我创建了这个工具。但是当我在调试和发布中构建它时,它会生成.exe文件,我只能在shell中运行。
但是,我需要在应用程序包中构建此程序,以便我可以将其发送给其他用户,并且可以通过单击它来运行它。有什么办法可以实现这个目标吗?(我已经花了几个小时来讨论这个问题,但看不到向我解释的明确文档。如果没有任何作用,那么我需要用Java重写它。)
提前非常感谢你!
答案 0 :(得分:1)
假设Mono安装在您的所有目标计算机上,那么您可以将(手动)一个.app包文件夹放在一起,该文件夹将在用户双击它时运行您的.exe文件。你需要在.app包中放置一些东西,其中一个是命令shell文件,它将启动你的.exe并将在.app运行时执行。
B.t.w。 Visual Studio Mac和Xamarin Studio以及MonoDevelop在同一件事上基本上都是不同的,MonoDevelop。 VS mac和XS有额外的功能,但基本的底层IDE是MD。无论您使用哪种产品编译代码,都不太可能产生与下一代产品不同的任何产品。
基本.app文件夹的结构:
MyApp.app
+-- Contents
--- Info.plist
+-- MacOS
--- MyApp
--- MyApp.exe
+-- Resources
--- MyApp.icns
内容如下:
Info.plist是Mac OS特定的XML文件,其中包含.app包的说明。它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>MyApp</string>
<key>CFBundleIconFile</key>
<string>MyApp.icns</string>
<key>CFBundleIdentifier</key>
<string>com.myapp</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>My App Name</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.2.3</string>
<key>CFBundleSignature</key>
<string>xmmd</string>
<key>CFBundleVersion</key>
<string>1.2.3</string>
<key>NSAppleScriptEnabled</key>
<string>NO</string>
</dict>
</plist>
MyApp.icns文件是一个图标文件,您希望将其用作应用包的图标。
MyApp.exe文件是您编译的.NET exe。
MyApp文件是一个可执行命令文件,在用户执行.app包时执行。这在CFBundleExecutable下的plist文件中引用,并且必须是可执行的(+ x权限)。这就是它的样子:
#!/bin/sh
DIR=$(cd "$(dirname "$0")"; pwd)
MONO_FRAMEWORK_PATH=/Library/Frameworks/Mono.framework/Versions/Current
export DYLD_FALLBACK_LIBRARY_PATH="$DIR:$MONO_FRAMEWORK_PATH/lib:/lib:/usr/lib"
export PATH="$MONO_FRAMEWORK_PATH/bin:$PATH"
exec mono "$DIR/MyApp.exe"
希望这会有所帮助。干杯,马丁。
答案 1 :(得分:0)
我有Xamarin工作室社区,我再试过一次,它是用EXE构建的。