在C#类库中创建嵌入式资源(如果没有';不存在
我对类库有意见;我正在准备一个带有接口的库,该接口表示特定的数据存储签名。其目的是将该接口用作实现以不同格式(文本文件、xml文件等)存储配置信息的许多特定类的基础,同时为使用该接口的应用程序保留相同的使用配置文件。不过我有个问题。在本例中,我尝试嵌入一个xml文件作为资源—该文件是存储配置数据的一种格式。该文件作为嵌入资源位于项目的子文件夹中,如附图所示 在下面的代码片段中,我展示了到目前为止我是如何实现该功能的在C#类库中创建嵌入式资源(如果没有';不存在,c#,xml,embedded-resource,C#,Xml,Embedded Resource,我对类库有意见;我正在准备一个带有接口的库,该接口表示特定的数据存储签名。其目的是将该接口用作实现以不同格式(文本文件、xml文件等)存储配置信息的许多特定类的基础,同时为使用该接口的应用程序保留相同的使用配置文件。不过我有个问题。在本例中,我尝试嵌入一个xml文件作为资源—该文件是存储配置数据的一种格式。该文件作为嵌入资源位于项目的子文件夹中,如附图所示 在下面的代码片段中,我展示了到目前为止我是如何实现该功能的 public ConfigInfoXmlSource() { if (
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);
...
}
在标记为“准备XML”的部分中,我试图从嵌入的资源中读取一个流。读取后,测试是否确实创建了流。如果找到该文件,manifestResourceStream将包含xml数据——目前为止还不错。如果文件由于某种原因被意外删除,问题就会出现——在这种情况下,我想创建一个新文件作为嵌入式资源来替换删除的文件。这应该发生在显示为“?”的部分的条件中
我尝试了我能想到的一切,在谷歌上搜索答案,等等——都没有用
有人知道这是如何实现的吗?任何帮助都将不胜感激
提前谢谢
致以最诚挚的问候。如果您有一个嵌入式资源,它将内置到您的二进制文件中。它不是一个物理文件,而是内置文件(在本例中为dll)中的某个文件。因此,一旦包含它,我认为它永远无法删除。据我所知,嵌入式资源只能在构建项目二进制文件时设置,您不能在运行时显式地进行设置,因为由于上述原因不需要它。删除嵌入式资源的前提似乎很荒谬。嵌入式资源是DLL的一部分,任何人都不应该编辑DLL。事实上,嵌入资源而不是将其作为单独的文件交付的原因之一是为了防止人们更改或删除资源。那么,您为什么担心资源被删除的可能性呢?我会忽略这种可能性。谢谢大家的澄清。项目树中的资源显示为一个文件,给人的视觉印象让我很困惑。