在 monogame 中将 dll 和内容嵌入到 exe 中

Embed dlls and contents into exe in monogame

Window FormsWPF等其他C#项目中,我可以将构建的exe复制到其他带有.net和运行的环境中而不会出错。

但是,在MonoGame中,exe文件需要很多dll,需要内容文件夹才能运行成功。

有没有办法在 exe 中包含 dll 和内容?

其实分两步就可以实现

  1. 嵌入 dll。
  2. 包括内容。

嵌入 dll

这可以通过使用 NuGet 安装 Costura.Fody 轻松实现。

在程序包管理器控制台中键入以下行

Install-Package Costura.Fody

来源:Embedding DLLs in a compiled executable.

包括内容

  1. 将您编译的内容文件(.xnb 文件和其他内容)复制到您的 Content 文件夹。
  2. 转到项目 属性 页面并将编译的内容文件添加到资源中。
  3. 替换下面的代码:

    public Game1()
    {
        graphics = new GraphicsDeviceManager(this);
        Content.RootDirectory = "Content";
    }
    

    public Game1()
    {
        graphics = new GraphicsDeviceManager(this);
        ResourceContentManager resxContent;
        resxContent = new ResourceContentManager(Services, Resources.ResourceManager);
        Content = resxContent;
    }
    
  4. 完成!您现在可以使用旧方法加载内容

    Content.Load<Texture2D>("Image1");
    

来源:Loading Content Within a Game Library