简体   繁体   English

如何在控制台上验证dot net应用程序配置文件(例如,app.exe.config)?

[英]how can I validate dot net application config file(ex, app.exe.config) on console?

是否有任何工具来验证配置文件?

Well, basically your app is the validator - if the config file is not valid, you'll get an exception when starting up. 好吧,基本上你的应用程序是验证器 - 如果配置文件无效,你将在启动时遇到异常。 Other than that, I'm not aware of any out-of-the-box validation support for app.config files. 除此之外,我不知道对app.config文件的任何开箱即用的验证支持。

In your directory C:\\Program Files\\Microsoft Visual Studio 9.0\\Xml\\Schemas , you'll find some files called DotNetConfig.xsd / DotNetConfig20.xsd - those are Microsoft-supplied XML schema files, which you could easily use to validate any other config files you might have for validity. 在您的目录C:\\Program Files\\Microsoft Visual Studio 9.0\\Xml\\Schemas ,您将找到一些名为DotNetConfig.xsd / DotNetConfig20.xsd文件 - 这些是Microsoft提供的XML模式文件,您可以轻松地使用它来验证任何文件您可能拥有的其他配置文件的有效性。

The basic structure for programmatically validating your configs would be something like this: 以编程方式验证您的配置的基本结构将是这样的:

using(StreamReader xsdReader = new StreamReader(xsdFileName))
{
    XmlSchema Schema = new XmlSchema();
    Schema = XmlSchema.Read(xsdReader, new ValidationEventHandler(XSDValidationEventHandler));

    XmlReaderSettings ReaderSettings = new XmlReaderSettings();    
    ReaderSettings.ValidationType = ValidationType.Schema;                
    ReaderSettings.Schemas.Add(Schema);   

    ReaderSettings.ValidationEventHandler += new ValidationEventHandler(XMLValidationEventHandler);

    using(XmlTextReader xmlReader = new XmlTextReader(xmlFileName))
    {
        XmlReader objXmlReader = XmlReader.Create(xmlReader, ReaderSettings);

        while (objXmlReader.Read())
        {   }
    }
}
Console.WriteLine("Successful validation completed!");

What you need to do now is supply event handlers for those event that get raised when something in the validation goes wrong - that's about it! 您现在需要做的是为那些在验证中的某些内容出错时引发的事件提供事件处理程序 - 就是这样! :-) :-)

Very old question but I had the same question and here is my setup (.net framework 3.5 and up): 很老的问题,但我有同样的问题,这里是我的设置(.net框架3.5及以上):

  1. I created a console project named 'ConfigurationValidator' : 我创建了一个名为'ConfigurationValidator'的控制台项目:

      static void Main(string[] args) { try { string xsdFileName = ConfigurationManager.AppSettings["configXsdPath"]; string xmlFileName = args[0]; XmlSchemaSet schemas = new XmlSchemaSet(); schemas.Add(null, xsdFileName); XDocument doc = XDocument.Load(xmlFileName); string validationMessage = string.Empty; doc.Validate(schemas, (sender, e) => { validationMessage += e.Message + Environment.NewLine; }); if (validationMessage == string.Empty) { Console.WriteLine("CONFIG FILE IS VALID"); } else { Console.WriteLine("CONFIG FILE IS INVALID : {0}", validationMessage); } } catch(Exception ex) { Console.WriteLine("EXCEPTION VALIDATING CONFIG FILE : {0}", ex.Message); } } 

and the following app.config : 和以下app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <appSettings>
     <add key="configXsdPath" value="C:\Program Files (x86)\Microsoft Visual Studio 11.0\Xml\Schemas\DotNetConfig35.xsd"/>
   </appSettings>
</configuration>
  1. For each project of the solution add post build event command, for example : 对于解决方案的每个项目,添加post build事件命令,例如: post build命令

when validation succeeds i get the following output : 验证成功后,我得到以下输出: 有效配置

when validation fails i get an output like so: 当验证失败时,我得到如下输出: 配置无效

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM