我有一个调用类库(ProcessFile)的控制台应用程序(MasterApp)。 ProcessFile中的一个函数接收一个xml文档并根据xsd对其进行验证。 xsd存储在ProcessFile项目下的文件夹下。我目前正在使用绝对路径读取文件。
我希望能够将我的MasterApp部署到服务器,但是我能让它工作的唯一方法是我还复制了ProcessFile项目文件夹,因为我使用的是绝对路径。如果可以的话,我不想使用绝对路径。
有没有办法将xsd保留在ProcessFile库下,但是能够在服务器上运行MasterApp时使用它?我需要做某种构建过程吗?
我想过将xsd放在MasterApp下的一个文件夹下,但是我试图让MasterApp尽可能地与ProcessFile分离。 ProcessFile应该能够针对xsd进行验证,而不需要MasterApp知道xsd。
答案 0 :(得分:3)
您可以将架构嵌入ProcessFile / MasterApp程序集中,并在需要验证xml时将其解压缩。如果您不确定如何嵌入,请阅读this.
// Get the assembly that contains the embedded schema
var assembly = Assembly.GetExecutingAssembly();
using (var stream = assembly.GetManifestResourceStream("namespace.Yourschema.xsd"))
using (var reader = XmlReader.Create(stream))
{
XmlSchema schema = XMLSchema.Read(reader, new ValidationEventHandler(ValidationEventHandler));
}