在 monogame 中将 dll 和内容嵌入到 exe 中
Embed dlls and contents into exe in monogame
在Window Forms
和WPF
等其他C#项目中,我可以将构建的exe复制到其他带有.net和运行的环境中而不会出错。
但是,在MonoGame
中,exe文件需要很多dll,需要内容文件夹才能运行成功。
有没有办法在 exe 中包含 dll 和内容?
其实分两步就可以实现
- 嵌入 dll。
- 包括内容。
嵌入 dll
这可以通过使用 NuGet 安装 Costura.Fody 轻松实现。
在程序包管理器控制台中键入以下行
Install-Package Costura.Fody
来源:Embedding DLLs in a compiled executable.
包括内容
- 将您编译的内容文件(
.xnb
文件和其他内容)复制到您的 Content
文件夹。
- 转到项目 属性 页面并将编译的内容文件添加到资源中。
替换下面的代码:
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;
}
完成!您现在可以使用旧方法加载内容
Content.Load<Texture2D>("Image1");
在Window Forms
和WPF
等其他C#项目中,我可以将构建的exe复制到其他带有.net和运行的环境中而不会出错。
但是,在MonoGame
中,exe文件需要很多dll,需要内容文件夹才能运行成功。
有没有办法在 exe 中包含 dll 和内容?
其实分两步就可以实现
- 嵌入 dll。
- 包括内容。
嵌入 dll
这可以通过使用 NuGet 安装 Costura.Fody 轻松实现。
在程序包管理器控制台中键入以下行
Install-Package Costura.Fody
来源:Embedding DLLs in a compiled executable.
包括内容
- 将您编译的内容文件(
.xnb
文件和其他内容)复制到您的Content
文件夹。 - 转到项目 属性 页面并将编译的内容文件添加到资源中。
替换下面的代码:
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; }
完成!您现在可以使用旧方法加载内容
Content.Load<Texture2D>("Image1");