2009-04-13 5 views
35

Visual Studioで.NET設定ファイル(app.config、web.configなど)を編集するときに、アプリケーションの設定を選択する際にVisual Studioのインテリセンスが表示されます。カスタム設定セクションを追加すると、カスタム設定でインテリセンスを有効にするにはどうすればよいですか?私はこれに簡単な答えがあるに違いないと確信していますが、大まかなGoogle検索では私に何の助けも与えませんでした。.configファイルのカスタムセクションにIntellisenseを有効にする

ありがとうございます!

答えて

28

あなたはVisual Studioのファイルを変更する場合、またはVisual Studioのフォルダには何もコピーしない場合、あなたは、あなたのプロジェクトに.xsdファイルを追加するには、.configファイルを開き、プロパティスキーマを選択することができます窓([…]アイコンをクリックしてください):

Screenshot of Visual Studio showing where to find and change the "Schemas" property of your <code>.config</code> file

+5

+1受け入れられたソリューションは広く実践されているようですが、スキーマの変更が標準であり、コンピュータ上に作成される可能性のあるすべてのVisual Studioプロジェクトにとって有用でない限り、これを行うべきではありません(http://msdn.microsoft.com/ ja-jp/library/ms255821.aspx) – Paul

10

カスタム設定用のXSDファイルを作成し、それをVisual Studioインストールのスキーマディレクトリにコピーする必要があります。 2005の場合、これは次のとおりです。%ProgramFiles%\ Microsoft Visual Studio 8 \ XML \ Schemas

ここにいくつかの情報があります。 http://blogs.msdn.com/astebner/archive/2005/12/07/501466.aspx

+0

優れています。ありがとう! –

31

を他の回答が言うように、あなたのカスタム構成セクションのためのXMLスキーマ文書を提供する必要があります。一部のグローバルディレクトリに.xsdスキーマファイルを追加する必要はありません。あなたはApp.configファイルにカスタムセクションから直接それを参照することができます

<configuration> 

    <!-- make the custom section known to .NET's configuration manager --> 
    <configSections> 
    <section name="customSection" type="..." /> 
    </configSections> 

    <!-- your custom section --> 
    <customSection xmlns="http://tempuri.org/customSection.xsd" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="customSection.xsd"> 
    ... 
    </customSection> 

<configuration> 

xmlns属性は、デフォルトの名前空間を設定するだけであり、あなたがあなたのcustomSection要素とのすべてにそれを設定する必要はありませんようにその子要素。 (ただし、<configuration>要素にxmlns属性を置かないでください!)customSection.xsdは、例えば、インテリセンスで使用されるスキーマが含まれ

<xs:schema id="customSectionSchema" 
      targetNamespace="http://tempuri.org/customSection.xsd" 
      elementFormDefault="qualified" 
      xmlns="http://tempuri.org/customSection.xsd" 
      xmlns:mstns="http://tempuri.org/customSection.xsd" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="customSection"> 
    ... 
    </xs:element> 
</xs:schema> 
+0

section.typeにはどのようなタイプを入れるのですか?私は推測し、そこに "xmlns"を入れて、それは動作します...しかし、私は間違っていることをかなり確信しています。 –

+1

@Prisonerの場合、(少なくともアセンブリ修飾された).NET型名àla '" Namespace.Class、Assembly "をそこに置くことになっています。フレームワークはこのタイプをインスタンス化し、カスタム設定セクションを解析したいときはいつでもそれを使用します。あらかじめ定義されたいくつかのセクションハンドラクラス、または 'IConfigurationSectionHandler'インタフェースを実装するカスタムクラスを選択します。詳細については、App.configのカスタムセクションハンドラのようなものをgoogleに、または[このコードプロジェクトの記事](http://www.codeproject.com/KB/aspnet/ConfigSections)などのトピックに関する記事を読んでください。 .aspx)を起動します。 – stakx

+0

これはちょっと遅かったのですが、これはConfiguration Managerがカスタム設定セクションを読み込もうとしたときに実行時の問題を引き起こし、 'xmlns:xsi'属性を認識できなかったようです。私はそれを修正するために何ができるか知っていますか?ありがとう –

関連する問題