C# 在程序集中找不到嵌入的架构
我有DefaultSchemaSet.xsd。现在我得到下面代码的FileNotFoundException。请给我一些建议好吗?我能知道怎么解决这个问题吗C# 在程序集中找不到嵌入的架构,c#,xsd,.net-assembly,C#,Xsd,.net Assembly,我有DefaultSchemaSet.xsd。现在我得到下面代码的FileNotFoundException。请给我一些建议好吗?我能知道怎么解决这个问题吗 public static void GetDefaultSchemas(string path, XmlSchemaSet schemas, ValidationEventHandler schemaValidationEventHandler) { using (var stream = Assembly.Get
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);
}
}
为了确保您可以从代码中访问它,您需要确保文件的构建操作设置为Embedded Resource 为了进一步提供帮助,我们确实需要查看文件在解决方案中的位置,以便为您提供准确的答案,但同时,如果您确保参数路径遵循以下模式:
[DefaultNamespace].[AnySubFolders].[filename.fileextension]
注意:如果没有方括号,请检查资源名称的格式:
DefaultNamespace[.Subfolder][...MoreSubfolers].FileName[.extension]
您需要将生成操作设置为项目文件属性中的嵌入资源
此外,还需要检查用于项目的命名空间:
尝试检查可用的资源,以便找到是否存在特定的资源:
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
构成资源名称的不是程序集名称,而是项目的默认名称空间谢谢George。我按照你的建议解决了这个问题。非常感谢。