【问题标题】:Run Xamarin project from command line从命令行运行 Xamarin 项目
【发布时间】:2016-03-10 02:13:30
【问题描述】:

我在 OSX 上有一个通过 Xamarin 构建和执行的 C# 项目。如何从命令行运行这个项目?我需要将哪些参数传递给mono

【问题讨论】:

  • 你怎么不用MSBuild

标签: c# xamarin mono


【解决方案1】:

基本用法

运行使用 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
  • 您正在构建/运行什么类型的项目?如果您尝试从 cmd 行运行 Xamarin.Mac 项目,则需要 open MyMonoMac.app,如果这是一个 iOS 项目,则不能从 cmd 行“运行”它,您需要运行它从 iOS 模拟器中或将其安装在 iOS 设备上...
  • 这是一个Mac项目,事实上,当从open调用时它确实可以运行,但是我希望有一种方法可以通过直接调用mono来运行该项目。最终目标是启用分析。
【解决方案2】:

虽然我的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2014-12-11
    • 2013-05-08
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多