Command line 使用mdtool编译monotouch应用程序失败,可在MonoDevelop中运行

Command line 使用mdtool编译monotouch应用程序失败,可在MonoDevelop中运行,command-line,mono,xamarin.ios,monodevelop,mdtool,Command Line,Mono,Xamarin.ios,Monodevelop,Mdtool,我有一个Monotouch iPad应用程序,我正在尝试为它设置一个自动构建脚本。我试图使用mdtool,但我似乎遇到了麻烦。如果我使用MonoDevelopGUI构建解决方案,它将成功构建。但是,如果我清理解决方案,并使用mdtool构建,它会得到一个关于未知文件中null引用异常的异常 我在谷歌上搜索了几个小时。我想我在Stack Overflow上找到了几条线索,但它们似乎都是不同的情况。关于在UI中成功构建和在CLI上失败,没有太多内容 以下是一些输出: Performing

我有一个Monotouch iPad应用程序,我正在尝试为它设置一个自动构建脚本。我试图使用mdtool,但我似乎遇到了麻烦。如果我使用MonoDevelopGUI构建解决方案,它将成功构建。但是,如果我清理解决方案,并使用mdtool构建,它会得到一个关于未知文件中null引用异常的异常

我在谷歌上搜索了几个小时。我想我在Stack Overflow上找到了几条线索,但它们似乎都是不同的情况。关于在UI中成功构建和在CLI上失败,没有太多内容

以下是一些输出:

     Performing main compilation...
        Updating CodeBehind files
ERROR [2011-06-03 11:27:52Z]: Error generating code for xib file '/Users/Me/Documents/Code/MyApp/MainWindow.xib'
System.NullReferenceException: Object reference not set to an instance of an object at MonoDevelop.DesignerSupport.CodeBehindWriter.<get_OpenFiles>m__21 () [0x00000] in <filename unknown>:0 
at MonoDevelop.Ide.DispatchService.GuiSyncDispatch (MonoDevelop.Ide.MessageHandler cb) [0x00000] in <filename unknown>:0 
at MonoDevelop.DesignerSupport.CodeBehindWriter.get_OpenFiles () [0x00000] in <filename unknown>:0 
at MonoDevelop.DesignerSupport.CodeBehindWriter.Write (System.CodeDom.CodeCompileUnit ccu, FilePath path) [0x00000] in <filename unknown>:0 
at MonoDevelop.MacDev.XibCodeBehind.GenerateDesignerCode (MonoDevelop.DesignerSupport.CodeBehindWriter writer, MonoDevelop.Projects.ProjectFile xibFile, MonoDevelop.Projects.ProjectFile designerFile) [0x00000] in <filename unknown>:0 
at MonoDevelop.MacDev.MacBuildUtilities.UpdateCodeBehind (IProgressMonitor monitor, MonoDevelop.MacDev.XibCodeBehind generator, IEnumerable`1 items) [0x00000] in <filename unknown>:0 
为了保持完整,以下是我的版本:

    OS X: 10.6.7
    XCode: 3.2.6
    iOS SDK: 4.3
    Mono: 2.10.2
    MonoDevelop: 2.4.2
    MonoTouch: 4.0.3
更新(2011年6月7日):


作为替代方案,我尝试执行
mdtool生成makefile
。它创建了人们所期望的一切,并且
/configure
运行正常,但是
make
失败得非常惨。如果有人有任何想法,我很乐意解决这个问题。

这是一个bug,但是只有当xib或项目(csproj)文件比设计器文件新时,才会生成设计器代码。在IDE中构建一次,或者“触摸”设计器文件,mdtool将再次工作。

我认为这只能在MD中调用时工作,堆栈跟踪意味着它试图对IDE中打开的文件执行操作:(@Ian,为了确保我的理解,你是说我不能从CLI编译,它只能从IDE工作?@Kirk,可能:(,只是一个猜测,虽然我说的是垃圾,很明显这是一个bug。@Kirk,monodevelop这部分的来源在这里:。你试过monodevelop 2.6 beta吗?这似乎有效,但由于我的目标是构建一个一键式构建脚本,所以这个bug似乎会阻碍我的努力。不过,我正在用AppleScript构建我的脚本。看起来更像是一个shell脚本,但它似乎确实有效。我收回它,我想我忘记了触摸设计器文件。我没有尝试过。如果这样做,那么我的shell脚本可能仍然有效。触摸设计器文件似乎可以奏效。但我的后续问题是:你说“仅当xib或项目文件比设计器文件新时,才会生成设计器代码。“通过触摸设计器文件,这会将其设置为目录中的最新文件,这使其看起来与您的原始声明相反。重新生成设计器文件的唯一原因是您在MD中修改了项目文件或xib文件,而没有重新生成项目,或者如果有其他内容(例如VCS)正在混乱文件写入时间。通过使设计器文件比其他文件更新,您可以防止触发其重新生成。我们可以获得该错误的链接吗?
    OS X: 10.6.7
    XCode: 3.2.6
    iOS SDK: 4.3
    Mono: 2.10.2
    MonoDevelop: 2.4.2
    MonoTouch: 4.0.3