gpt4 book ai didi

c# - 以编程方式在 .NET 程序集中嵌入资源

转载 作者:行者123 更新时间:2023-12-04 12:44:06 26 4
gpt4 key购买 nike

我正在尝试生成可以通过更改嵌入资源进行自定义的通用 .NET 可执行文件。理想情况下,我希望能够使用编译的可执行文件来做到这一点,但使用某种中间表示也是可以接受的。关键是我需要能够用程序来做到这一点,而不是手动。

考虑一个看起来像这样的 C# 程序:

namespace MyProgram {
public class Program {
public static void Main(string[] args)
{
using(var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyProgram.Resources.foo"))
{
// ignore stream == null
DoStuff(stream);
}
}
}
}

当某些资源被嵌入并命名为“foo”时,这将按预期工作。但是,我想要完成的是在没有嵌入资源的情况下构建程序,然后对程序进行“后处理”以嵌入资源。事实上,如果可以嵌入一个具有任意名称的新资源并将其添加到资源 list 中,这样程序就可以在运行时读取嵌入的资源并对其进行操作,那就更好了。

有没有办法以编程方式将新资源嵌入到已编译的 .NET 可执行文件中?

最佳答案

假设您有一个名为 Resources.csproj 的项目.

您可以将资源复制到特定目录(例如内容)。

Project directory structure
----------------------------
Properties
AssemblyInfo.cs
Content
Item1.png
Item2.png

然后,您可以使用 XDocument 动态更新您的 csproj 文件。或类似的将您的内容包含为嵌入式资源。
<Project>
<ItemGroup>
<EmbeddedResource Include="Content\Item1.png" />
<EmbeddedResource Include="Content\Item2.png" />
</ItemGroup>
</Project>

然后,您可以随意编译项目。
msbuild Resources.sln

然后您的资源应该在输出程序集中可用。优点是这种方式避免了处理 CodeDom的开销。 .

关于c# - 以编程方式在 .NET 程序集中嵌入资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49781946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com