【问题标题】:How to fix MissingMethodException during Content.Load<Texture2D> in Xamarin Studio on MacOS X?如何在 MacOS X 上的 Xamarin Studio 中修复 Content.Load<Texture2D> 期间的 MissingMethodException?
【发布时间】:2023-08-11 20:12:02
【问题描述】:

我正在尝试在 Xamarin Studio 4.0.10 (build 5) 中使用 MonoGame 创建一个简单的程序。 但是当我尝试使用Content.Load 方法加载一些纹理时,我收到一个异常System.MissingMethodException 并带有一条消息

Method not found: 'MonoMac.AppKit.NSImage.AsCGImage'.

我使用的实际代码行是:

protected override void LoadContent()
{
    //some stuff here

    Texture2D freezeTexts = new Texture2D[5];
    for (int i = 0; i < 5; i++) {
        freezeTexts[i] = Content.Load<Texture2D>("freeze"+i); // exception here
    }

    //some other stuff here
}

我进行了一些谷歌搜索,发现这是由于一些 API 更改而发生的,而 Xamarin Studio 尚未实现(至少这是我所理解的)。所以我的问题是:我该如何解决这个问题?

【问题讨论】:

    标签: c# macos mono monogame xamarin-studio


    【解决方案1】:

    您可以从最新的源代码编译 monomac,以使 API 保持最新。

    这很简单 - 这个blog 有一些很好的说明。

    编辑

    看来您需要及时返回 monomac 以获得与当前 MonoGame 版本兼容的版本(该版本相当老了 - 3.0.1 于 2013 年 3 月 6 日发布)。

    从源代码编译 MonoGame 本身可能会更好。我设法通过分叉他们的repo 并编译MonoGame.Framework.MacOS 解决方案来做到这一点。

    引用此生成的程序集代替已发布的MonoGame.Framework.dll 允许我的测试应用程序构建和启动。

    【讨论】:

    • 我按照说明编译了 MonoMac.dll,然后将其添加为对项目的引用,而不是现有的 MonoMac,但我仍然有同样的异常。我希望我只需要找到一个特定的提交来构建?
    • @AntonGuryanov 查看我的编辑。我不知道这是否是推荐的解决方案,但它应该能让你启动并运行
    • 谢谢,现在可以使用了!顺便提一下,没有必要分叉他们的仓库,只需克隆和构建。
    最近更新 更多