How do I make a schema for custom config sections? I tried making one, but when I used it, it said the only expected element was what I had in that schema, and complained about the standard web.config stuff, even though I was still using the normal DotNetConfig.xsd file too.
问题:
回答1:
This question I found isn't duplicate, but the solution will solve your problem:
How to fix Error: "Could not find schema information for the attribute/element" by creating schema
The trick is to get the "Properties" of the app.config editor, and set the Schemas
value:
- Right Click -> Properties anywhere in the XML file editor, or just hit F4 while it is in focus
- In that dialog, add a local or absolute reference to a schema file
My app.config file's properties window/gadget looks like this:
Here's an example I just got working (I'm toying around with Ninject and NLog). The elements and attributes under the nlog
section show up correctly in Intellisense, and I get squiggly lines if I violate the schema.
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
</configSections>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="eventLog" xsi:type="EventLog" log="Application"
category="TestService" />
<target name="file" xsi:type="File"
layout="${longdate}|${stacktrace}|${message}"
fileName="${logger}.txt" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="eventLog" />
<logger name="*" minlevel="Debug" writeTo="file"/>
</rules>
</nlog>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
My schema file is in my project root, right next to app.config, and called NLog.xsd
. I simply saved it from here:
- http://nlog-project.org/schemas/NLog.xsd
回答2:
Maybe it's just my environment or something changed in .NET 4.6 (not sure).
To get intellisense to work with a newly created app.config file...
Step 1 : Add a new item App.Config to your solution.
It will look like this, note the intellisense errors:
Step 2 : Press F4 in the editor to show the Properites page of the XML document:
My defaults were showing this:
Step 3: Click the elipse at far right of Schemas property above...
Check the DonNetConfig.xsd, close the window and start typing in
No more errors and intellisense works...
回答3:
When I tried this, it didn't work. The configuration system assumes that everything is in the default namespace, and chokes if it's not. It's very disappointing.