Mac应用程序从Gtk在Visual Studio Mac中

时间:2016-12-08 22:46:48

标签: c# gtk# visual-studio-mac

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

但是,我需要在应用程序包中构建此程序,以便我可以将其发送给其他用户,并且可以通过单击它来运行它。有什么办法可以实现这个目标吗?(我已经花了几个小时来讨论这个问题,但看不到向我解释的明确文档。如果没有任何作用,那么我需要用Java重写它。)

提前非常感谢你!

2 个答案:

答案 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构建的。