我有DefaultSchemaSet.xsd。现在我收到以下代码的FileNotFoundException。请给我任何建议吗?我可以知道如何解决这个问题吗?
public static void GetDefaultSchemas(string path, XmlSchemaSet schemas, ValidationEventHandler schemaValidationEventHandler)
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(path))
{
if (stream == null)
{
throw new FileNotFoundException("Cannot find the embedded schemas in the assembly!");
}
var schema = XmlSchema.Read(stream, schemaValidationEventHandler);
schemas.Add(schema);
}
}
答案 0 :(得分:0)
为了确保您可以从代码中访问它,您需要确保将文件的构建操作设置为"嵌入式资源"
为了进一步提供帮助,我们确实需要查看文件在解决方案中的位置(以便给出确切的答案),但同时确保您的参数" path"遵循这种模式:
[DefaultNamespace].[AnySubFolders].[filename.fileextension]
注意没有方括号
答案 1 :(得分:0)
检查资源名称的格式:
DefaultNamespace[.Subfolder][...MoreSubfolers].FileName[.extension]
您需要在项目的文件属性中将Build Action设置为Embedded Resource。
此外,您需要检查用于项目的命名空间:
尝试检查可用资源,以便查找是否存在特定资源:
var executingAssembly = Assembly.GetExecutingAssembly();
var resourceNames = executingAssembly.GetManifestResourceNames();
foreach (var resourceName in resourceNames)
{
Console.WriteLine("Resource: " + resourceName);
Console.WriteLine("Contents:");
using (var sr = new StreamReader(executingAssembly.GetManifestResourceStream(resourceName)))
{
Console.WriteLine(sr.ReadToEnd());
}
}
输出:
Resource: EmbeddingTests.TextFile1.txt
Contents:
Hello
Resource: EmbeddingTests.NewFolder1.TextFile2.txt
Contents:
Hello 2