【发布时间】:2016-03-10 02:13:30
【问题描述】:
我在 OSX 上有一个通过 Xamarin 构建和执行的 C# 项目。如何从命令行运行这个项目?我需要将哪些参数传递给mono?
【问题讨论】:
-
你怎么不用
MSBuild?
我在 OSX 上有一个通过 Xamarin 构建和执行的 C# 项目。如何从命令行运行这个项目?我需要将哪些参数传递给mono?
【问题讨论】:
MSBuild?
运行使用 Mono 编译的应用程序的正常方法是通过 Mono 运行时调用它,如下所示:
mono myprogram.exe
参考:高度过时的文档页面@http://www.mono-project.com/archived/guiderunning_mono_applications/
因此,在最基本的形式中,您只需将基于 CIL 的 .exe 传递给 mono 运行时/可执行文件。对于高级需求,请参阅man 页面以获取更多选项:
man mono
NAME
mono - Mono's ECMA-CLI native code generator (Just-in-Time and Ahead-of-
Time)
SYNOPSIS
mono [options] file [arguments...]
mono-sgen [options] file [arguments...]
~~~~~~
【讨论】:
mono myprogram.exe 时,我收到以下错误:No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting
open MyMonoMac.app,如果这是一个 iOS 项目,则不能从 cmd 行“运行”它,您需要运行它从 iOS 模拟器中或将其安装在 iOS 设备上...
open调用时它确实可以运行,但是我希望有一种方法可以通过直接调用mono来运行该项目。最终目标是启用分析。
虽然我的 Xamarin 项目最初是构建一个 OSX 应用程序而不是独立的单声道可执行文件,但可以先构建一个单独的可执行文件并使用单声道运行它。
对我来说,这涉及对我的 Xamarin 项目使用的每个源文件和每个 DLL 运行 mcs(单声道编译器)。我的大部分源文件都在一个目录中,Xamarin 将所有 DLL 收集到一个目录中,位于./bin/Debug/XXXXXXXXXXX.app/Contents/MonoBundle/ 下。我拿走了所有这些 DLL,将它们移到了一个新目录 lib。然后我可以像这样编译我的项目:
mcs *.cs -r:lib/MonoMac.dll -r:lib/MoreLinq.dll -r:lib/OpenTK.dll
这将输出带有第一个源文件名称的单声道可执行文件。它可以通过将文件复制到lib目录并在那里运行来运行:
cp Program.exe lib
cd lib
mono Program.exe
【讨论】: