我的课程库存在问题;我正在准备一个带有代表特定数据存储签名的接口的库。目的是使用该接口作为实现以不同格式(文本文件,xml文件等)存储配置信息的多个特定类的基础,同时保留使用它的应用程序的相同使用配置文件。不过我有一个问题。在这种情况下,我试图嵌入一个xml文件作为资源 - 这个文件是一种存储配置数据的格式。该文件位于项目子文件夹中的嵌入资源中,如附图所示。
在下面的代码片段中,显示了我到目前为止如何实现该功能。
public ConfigInfoXmlSource()
{
if (!string.IsNullOrEmpty(Settings.Default.CurrentConfigFile))
FileNameAndPath = Settings.Default.CurrentConfigFile;
else
FileNameAndPath = DefaultConfigFileName + DefaultFileExtension;
// Prepare XML.
System.Reflection.Assembly a = Assembly.GetExecutingAssembly();
XmlDocument doc = new XmlDocument();
Stream manifestResourceStream =
a.GetManifestResourceStream("TestTool.Config.Config1.xml");
if (manifestResourceStream == null)
{
// ???
}
...
doc.Load(manifestResourceStream);
...
}
在标记为“Prepare XML”的部分中,我试图从嵌入式资源中读取流。在读取之后,测试是否确实创建了流。如果找到该文件,manifestResourceStream将包含xml数据 - 到目前为止一直很好。如果由于某种原因意外删除了文件,则会出现问题 - 在这种情况下,我想创建一个新文件作为嵌入式资源来替换已删除的文件。这应该发生在显示为“???”的部分的条件中。
我已经尝试了我能想到的一切,搜索谷歌寻找答案等等 - 无济于事。
有没有人知道如何实现这一目标?任何帮助将不胜感激。
提前致谢。
最好的问候。
答案 0 :(得分:1)
如果你有一个嵌入式资源,它会内置到你的二进制文件中。它不是一个物理文件,而是存在于构建文件中的东西(在这种情况下是dll)。所以,一旦包含它,我就不会认为它可以被删除。根据我的知识,只能在构建项目二进制文件时设置嵌入式资源,并且由于上述原因,您无法在运行时明确地执行它,因为它不需要。