创建自己的应用程序项目文件

时间:2012-08-21 20:31:38

标签: c# project project-files

是否有任何指南可以将 C#应用程序保存到自己的外部项目文件中,例如嵌入图片等等。加载以后?感谢。

3 个答案:

答案 0 :(得分:1)

您可以在.NET程序集中嵌入任何类型的数据并从中读取,但您无法修改自己的可执行文件,即使可以,也不是一个坏主意。首先,想一想防病毒程序看到EXE在运行时突然发生变化的可能性。

如果您有元数据(图像或任何其他类型的文件),您需要阅读写入,只需使用文件系统。 Environment类具有的功能将返回众所周知的每个应用程序和每个用户位置,您可以在其中存储您想要的任何内容。

修改

我不确定这是不是你问的问题,但现在就这样了。让我们假设您有一个名为Document的类,其中包含一些文本和一些图像,这些图像以某种未指定的方式呈现。所以基本上它看起来像这样:

[Serializable]
class Document
{
    public string Text { get; set; }
    public Image[] Images { get; set; }
}

不确定Image是什么,我刚刚完成了。使用.NET序列化函数,您可以将其转换为字节流:

Document doc = GetDocumentFromUI();

MemoryStream stm = new MemoryStream(1024);
BinaryFormatter fmt = new BinaryFormatter();
fmt.Serialize(stm, doc);
byte[] data = stm.ToArray();

然后您可以将其保存到文件中。然后,您可以加载该文件并将其转换为文档:

byte[] data = LoadDocumentFromDisk();

BinaryFormatter fmt = new BinaryFormatter();
MemoryStream stm = new MemoryStream(data);
stm.Position = 0;
Document doc = fmt.Deserialize(stm) as Document;

这显然非常粗糙,但您可以在.NET中序列化和反序列化大多数对象,包括一些内置类型。

答案 1 :(得分:0)

不可能做你想做的事。您只能读取嵌入的资源,而不能修改它们。

答案 2 :(得分:0)

只需序列化要保存的数据,并在加载时反序列化。如果您想要编写更具体的数据,您必须确定自己的文件格式。