none
エラー「構成システムを初期化できませんでした。」が発生する RRS feed

  • 質問

  • ご教授願います。

    Visual Studio .net 2003で開発したアプリをVisual Studio 2005でソース変換・ビルドしたのち実行したところ、下記のステップでエラー「構成システムを初期化できませんでした。」でコケてしまいました:

    m_TCPChannel = New System.Runtime.Remoting.Channels.Tcp.TcpChannel(tcp_properties, Nothing, Nothing)

    Exception.ToStringを見ると「構成ファイルXXXX.exe.configにはルート<configuration>タグが含まれていません。」となっていました。そこで単純に当該プロジェクトのapp.configファイルのconfigoptをconfigurationに変えて再実行したところ、今度は「認識されない構成セクションxs:schemaです。」になりました。

    さらに単純に<configuration></configuration>だけのapp.configファイルにして実行したところ、コケてたエラーステップは回避されました。環境設定の問題だとは思いますが、アドバイス願います。

    app.configファイル:

    <?xml version="1.0" standalone="yes"?>
    <configopt>
      <xs:schema id="configopt" xmlns="" xmlns:xs="URLリンク" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xs:element name="configopt" msdata:IsDataSet="true" msdata:Locale="en-AU">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="Environment">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Name" type="xs:string" minOccurs="0" />
                    <xs:element name="System" type="xs:string" minOccurs="0" />
                    <xs:element name="DataLibrary" type="xs:string" minOccurs="0" />
                    <xs:element name="Default" type="xs:boolean" minOccurs="0" />
                    <xs:element name="UserId" type="xs:string" minOccurs="0" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:schema>
      <Environment>
        <Name>Test</Name>
        <System>XXXX.COM</System>
        <DataLibrary>XXXTEST</DataLibrary>
        <Default>false</Default>
        <UserId></UserId>
      </Environment>
      <Environment>
        <Name>Production</Name>
        <System>XXXXX.COM</System>
        <DataLibrary>XXXPROD</DataLibrary>
        <Default>true</Default>
        <UserId />
      </Environment>
    </configopt>

    2014年2月20日 7:50

回答

  • 結果、App.configファイルを正しい形式(<configuration> ... </configuration>)に修正し、旧App.configファイルはApp1.configファイルにリネームし、プロクラム上で別途読み込む様に修正しました。

    2014年2月25日 14:36

すべての返信

  • .net 2003にもこのファイルはあるのですか? あるとして、それはなぜですか?
    2014年2月20日 12:10
  • .net 2003での開発経緯は分からないのです。すみません。。。

    ただ本日、Executable\bin\XXXX.exe.configを削除したらエラーが回避されました。なぜでしょうか?

    2014年2月21日 6:34
  • .net 2003にもこのファイルはあるのですか?
    2014年2月22日 0:23
  • はい

    .net 2003にもApp.configとXXXX.exe.configの両方があり、同じ内容です。

    .net framework 1.1だと「m_TCPChannel = New System.Runtime.Remoting.Channels.Tcp.TcpChannel(tcp_properties, Nothing, Nothing)」でXXXX.exe.config(=App.config)の初期化 or Syntaxチェックがされず、.net framework 2.0だとされるためエラーとなるのでしょうか?

    2014年2月22日 5:08
  • コンパイル時、ソースコードとしてこららのファイルがあるかどうかよりも、実行時、XXXX.exeと同じ場所にXXXX.exe.configという名前のファイルがあり、その内容は質問文に挙げられているものなのでしょうか?

    というのも、.NET Frameworkにおける XXXX.exe.config はアプリケーション構成ファイルと呼ばれ、例えばこちらの説明に出てくるような形式をしています。内容は追加こそあれ.NET Framework 1.0より変わっておらず、質問文に挙げられているものは全くの別ファイルです。

    Visual Studio 2003及び.NET Framework 1.1での挙動がどうだったかまでは覚えていませんが、
    ソースコードにはApp.configというファイル名で置かれ、コンパイル時にXXXX.exe.configにリネームされます。実行時にはXXXX.exe.configの有無が確認され、内容が不正確な場合はエラーとなりプログラムは実行できません。

    ですので、.NET Framework 1.1で実行できていた、ということの方が不思議です。

    2014年2月22日 9:12
  • はい

    XXXX.exeと同じ場所にXXXX.exe.configがあり、内容は質問時に添付したapp.configファイルです。

    このXXXX.exeをWindows XP/.NET Framework1.1で実行すると正常に稼働し、Windows 7/.NET Framework 2.0で実行すると「構成システムは初期化できませんでした。」のエラーとなります。Windows 7/.NET Framework 2.0上だとVisual Studio 2005でビルドしなおしたexeも、元々のexeも同じエラーとなります。

    なので、NET Framework 1.1だと「m_TCPChannel = New System.Runtime.Remoting.Channels.Tcp.TcpChannel(tcp_properties, Nothing, Nothing)」でXXXX.exe.configのSyntaxチェックがされず、.NET Framework 2.0だとされるためエラーとなるのか?と考えました。

    2014年2月24日 3:42
  • 実際にWindows XPのPCを引っ張り出してきて、念のためVisual Studio .NET 2003もインストールし、検証してみました。

    やはり、「m_TCPChannel = New System.Runtime.Remoting.Channels.Tcp.TcpChannel(tcp_properties, Nothing, Nothing)」でエラーは発生しませんでした。

    Visual Studio .NET 2003/.NET Framework 1.1とVisual Studio 2005/.NET Framework 2.0とでは挙動が多少異なる様です。でもエラーチェックが向上しただけなら、そんなにクリティカルではないです。

    2014年2月25日 9:00
  • 結果、App.configファイルを正しい形式(<configuration> ... </configuration>)に修正し、旧App.configファイルはApp1.configファイルにリネームし、プロクラム上で別途読み込む様に修正しました。

    2014年2月25日 14:36