簡體   English   中英

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

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

是否有任何工具來驗證配置文件?

好吧,基本上你的應用程序是驗證器 - 如果配置文件無效,你將在啟動時遇到異常。 除此之外,我不知道對app.config文件的任何開箱即用的驗證支持。

在您的目錄C:\\Program Files\\Microsoft Visual Studio 9.0\\Xml\\Schemas ,您將找到一些名為DotNetConfig.xsd / DotNetConfig20.xsd文件 - 這些是Microsoft提供的XML模式文件,您可以輕松地使用它來驗證任何文件您可能擁有的其他配置文件的有效性。

以編程方式驗證您的配置的基本結構將是這樣的:

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!");

您現在需要做的是為那些在驗證中的某些內容出錯時引發的事件提供事件處理程序 - 就是這樣! :-)

很老的問題,但我有同樣的問題,這里是我的設置(.net框架3.5及以上):

  1. 我創建了一個名為'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); } } 

和以下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. 對於解決方案的每個項目,添加post build事件命令,例如: post build命令

驗證成功后,我得到以下輸出: 有效配置

當驗證失敗時,我得到如下輸出: 配置無效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM