2016-12-08 29 views
0

我在Mac开发环境中很新颖。我安装了Visual Studio for Mac,并创建了一个新的解决方案.NET/Gtk 2.0项目来构建GUI文件重命名工具。我创建了这个工具。但是,当我在调试和发布版本中构建它时,它会生成只能在shell中运行的.exe文件。来自Gtk的Mac应用程序在Visual Studio Mac中

不过,我需要在应用程序捆绑到建立这个程序,这样我可以在发送给其他用户,他们可以通过点击运行它。有没有办法做到这一点?(我花了几个小时的时间,但没有看到一个明确的文档向我解释。如果没有任何工作,那么我需要用Java重写它)。

非常感谢你提前!

+0

当我建立Linux和我的单Ubuntu的箱子我也得到一个exe安装我可以上可执行只要双击运行它。如果这不起作用,也许你可以创建一个运行该exe的shell脚本或本机应用程序? –

+0

是的,双击并不是在开玩笑,我从shell运行它,我不认为用户会对shell感到满意,或者不得不下载单声道框架来运行它。所以我猜,我会用Java构建它,因为我之前从未构建过本地Mac应用程序。虽然谢谢! – ozimax06

回答

0

我Xamarin Studio的社区,这是我尝试过,并再次,它内置的EXE。

+0

您可以添加编辑到您的文章,或评论以下。请保留答案部分以获得实际答案。 –

0

假设单安装在所有目标机器,那么你可以放在一起(手动),将运行的.exe文件。应用程序包文件夹的时候就可以了用户双击。有一些东西需要放在.app包中,其中一个是一个命令外壳文件,它将启动你的.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的是包含您的.app包的描述,一个Mac OS特定的XML文件。它会是这个样子:

<?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的文件是当。应用程序包是由用户执行的被执行的可执行命令文件。这是在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" 

希望这会有所帮助。干杯,马丁。