Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类库中的C#文件路径_C#_Xsd_Directory - Fatal编程技术网

类库中的C#文件路径

类库中的C#文件路径,c#,xsd,directory,C#,Xsd,Directory,我有一个控制台应用程序(MasterApp),它调用类库(ProcessFile)。ProcessFile内部的函数之一,接收xml文档并根据xsd对其进行验证。xsd存储在ProcessFile项目下的文件夹下。我当前正在使用绝对路径读取文件 我希望能够将我的MasterApp部署到服务器上,但使其工作的唯一方法是,如果我还复制ProcessFile项目文件夹,因为我使用的是绝对路径。如果可以的话,我不想使用绝对路径 有没有办法将xsd保存在ProcessFile库下,但在服务器上运行Mast

我有一个控制台应用程序(MasterApp),它调用类库(ProcessFile)。ProcessFile内部的函数之一,接收xml文档并根据xsd对其进行验证。xsd存储在ProcessFile项目下的文件夹下。我当前正在使用绝对路径读取文件

我希望能够将我的MasterApp部署到服务器上,但使其工作的唯一方法是,如果我还复制ProcessFile项目文件夹,因为我使用的是绝对路径。如果可以的话,我不想使用绝对路径

有没有办法将xsd保存在ProcessFile库下,但在服务器上运行MasterApp时能够使用它?我需要做一些构建过程吗


我曾考虑将xsd放在MasterApp下的一个文件夹下,但我正在尽可能地保持MasterApp与ProcessFile的解耦。ProcessFile应该能够针对xsd进行验证,而MasterApp不知道xsd。

您可以将架构嵌入ProcessFile/MasterApp程序集中,并在需要验证xml时将其提取出来。如果您不确定如何嵌入,请阅读


您可以将模式嵌入ProcessFile/MasterApp程序集中,并在需要验证xml时将其解压缩。如果您不确定如何嵌入,请阅读


将XSD文件的路径放在配置选项中,然后将此路径传递给现在知道如何查找该文件的库。另一个选项是假定文件位于程序运行的同一文件夹中,并在不提供任何路径的情况下打开它。您如何存储/访问文件路径。。它是硬编码的吗。。?或者它存储在.config文件中..:?你能找到exe所在的路径吗?@MethodMan文件路径目前是硬编码的。因为我只将MasterApp部署到服务器,所以不会复制xsd,因为我没有部署ProcessFile。@Steve我如何才能将xsd复制到MasterApp在生成过程中可以访问的位置?如果我使用“复制到输出目录”,则仅将其输出到ProcessFile的bin文件夹。不要硬编码路径@dburgener,将路径存储在.config文件中。。因此,如果你需要改变道路,以后再继续。。您可以在.config文件中更改它,而不必每次更改时都重新编译代码将XSD文件的路径放入配置选项中,然后将此路径传递给您的库,该库现在知道如何查找该文件。另一个选项是假定文件位于程序运行的同一文件夹中,并在不提供任何路径的情况下打开它。您如何存储/访问文件路径。。它是硬编码的吗。。?或者它存储在.config文件中..:?你能找到exe所在的路径吗?@MethodMan文件路径目前是硬编码的。因为我只将MasterApp部署到服务器,所以不会复制xsd,因为我没有部署ProcessFile。@Steve我如何才能将xsd复制到MasterApp在生成过程中可以访问的位置?如果我使用“复制到输出目录”,则仅将其输出到ProcessFile的bin文件夹。不要硬编码路径@dburgener,将路径存储在.config文件中。。因此,如果你需要改变道路,以后再继续。。您可以在.config文件中更改它,而不必在每次更改某些内容时重新编译代码
// 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));
}