3

我有一个应用程序,它读取特定类型的 XML 文件。这些 XML 文件可以相互引用,例如:

<MyXml>
    <Reference Path="pack://application:,,,/MyOtherXML.xml"/>
    <!--More data-->
</MyXml>

这主要是因为它们很长,而且您不想用 180 多行 XML 重复自己。

但是,如果文件是资源,我不确定如何检查文件是否存在。我知道如果它们是普通文件,我可以使用File.Exists,但我认为你不能为资源这样做。我也找到了这个,但答案似乎是错误的。那么如何检查 WPF 上是否存在资源呢?

4

2 回答 2

9

您需要使用GetManifestResourceStream来获取资源并从字典中读取键集合,如下所示 -

    public static string[] GetResourceNames()
    {
        var assembly = Assembly.GetExecutingAssembly();
        string resName = assembly.GetName().Name + ".g.resources";
        using (var stream = assembly.GetManifestResourceStream(resName))
        {
            using (var reader = new System.Resources.ResourceReader(stream))
            {
                return reader.Cast<DictionaryEntry>().Select(entry => 
                         (string)entry.Key).ToArray();
            }
        }
    }
于 2013-06-01T08:58:27.837 回答
-1

您可以调用Assembly.GetExecutingAssembly().GetManifestResourceNames()获取所有资源名称并检查所需资源的结果

var names = Assembly.GetExecutingAssembly().GetManifestResourceNames();
if(names.Contains(resourceNameTosearch))
{
    // exist 
}
于 2013-06-01T08:29:46.313 回答