我有一个应用程序,它从源文件编译另一个winform应用程序并在运行时创建一个.resources
文件,然后在编译期间将.resources文件添加为嵌入式资源。
我用于创建新.resources
文件的代码如下:
// Creating .resources file from a file named Photo.jpg
string myfile = "photo.jpg";
using (ResourceWriter rw = new ResourceWriter(@".\photoRes.resources"))
{
rw.AddResource("MyPhoto",File.ReadAllBytes(myfile));
}
然后,此资源文件将作为嵌入式资源添加到已编译的程序中。下面这一行将完成这项工作
// -- -- -- inside the CompileExecutable() function -- -- --
CompilerParameters cp = new CompilerParameters();
..
..
if (provider.Supports(GeneratorSupport.Resources))
{
cp.EmbeddedResources.Add("bindedfile.resources");
}
..
..
到目前为止,一切正常,我们从源文件编译的编译程序将是(程序大小+图片大小)。
图片现在是该文件的嵌入资源。因此,为了访问图片,提取并执行它,需要将一些代码行添加到该文件的源代码中,对吧?
我的问题是应该在source.cs
文件中写入什么来告诉它提取图像,该图像是它的嵌入资源,然后从临时文件夹执行它。
当我将下面的行添加到source.cs
时string[] arrayofstrings = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
foreach(string s in arrayofstrings) {MessageBox.Show(s);}
它显示了一个带有此文字的消息框:photoRes.resources
如何读取嵌入资源并将图像解压缩到temp文件夹然后执行它?要添加到source.cs的行?
答案 0 :(得分:0)
此支持文章How to embed and access resources by using Visual C#。
_imageStream = _assembly.GetManifestResourceStream("MyNameSpace.MyImage.bmp");