0

カスタム ハンドラー AbraMain.MyConfigHandler を使用して、app.config に configSections を作成しています。

エラー:


アセンブリ 'System.Configuration、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a' からタイプ 'AbraMain.MyConfigHandler.ApplicationListCollection' を読み込めませんでした。":"AbraMain.MyConfigHandler.ApplicationListCollection"

app.config

<configuration>
  <configSections>
     <section name="applicationList" type ="AbraMain.MyConfigHandler.ApplicationListCollection"/>
  </configSections>
  <applicationList>
     <add name="Abra Backup" index="0" iconIndex="0" desc="AbraBackup"/>
     <add name="Abra Backup" index="0" iconIndex="0" desc="AbraBackup"/>
  </applicationList>
</configuration>

MyConfigHandler.vb

名前空間 MyConfigHandler

'Desc : Individual Application configuration Class
'Handle Tag : App.config -> <applicationList> -> <add>
Public Class ApplInfoConfig
Inherits ConfigurationElement

<ConfigurationProperty("name", IsRequired:=True)> _
Public Property name() As String
  Get
    Return CStr(Me("name"))
  End Get
  Set(ByVal value As String)
    Me("name") = value
  End Set
End Property

<ConfigurationProperty("desc", DefaultValue:="", IsRequired:=False)> _
Public Property desc() As String
  Get
    Return CStr(Me("desc"))
  End Get
  Set(ByVal value As String)
    Me("desc") = value
  End Set
End Property

<ConfigurationProperty("subPath", DefaultValue:="", IsRequired:=False)> _
Public Property subPath() As String
  Get
    Return CStr(Me("subPath"))
  End Get
  Set(ByVal value As String)
    Me("subPath") = value
  End Set
End Property

<ConfigurationProperty("index", IsRequired:=True)> _
Public Property index() As Integer
  Get
    Return Me("index")
  End Get
  Set(ByVal value As Integer)
    Me("index") = value
  End Set
End Property

<ConfigurationProperty("iconIndex", DefaultValue:="0", IsRequired:=False)> _
Public Property iconIndex() As Integer
  Get
    Return Me("iconIndex")
  End Get
  Set(ByVal value As Integer)
    Me("iconIndex") = value
  End Set
End Property
End Class

'Desc : Collection of Individual Application configuration Class
'Handle Tag : App.config -> <applicationList>
Public Class ApplicationListCollection
Inherits ConfigurationElementCollection

Protected Overloads Overrides Function CreateNewElement() As System.Configuration.ConfigurationElement
  Return New ApplInfoConfig()
End Function

Protected Overrides Function GetElementKey(ByVal element As System.Configuration.ConfigurationElement) As Object
  Return CType(element, ApplInfoConfig).name()
End Function

End Class
End Namespace
4

1 に答える 1

0

問題は、app.configカスタム セクションのハンドラーを指定する行にあるようです。

<section name="applicationList" type ="AbraMain.MyConfigHandler.ApplicationListCollection"/>

カスタム ハンドラー型の型宣言には、それが見つかるアセンブリも含める必要があります。System.Configurationそれ以外の場合は、既定のアセンブリで検索しようとします。それは、あなたが言ったエラーメッセージでもあります。

したがって、アセンブリの名前も含めることで解決できます。あなたのアセンブリの名前はAbraMain. 次に、その行を次のように変更する必要があります。

<section name="applicationList" type ="AbraMain.MyConfigHandler.ApplicationListCollection, AbraMain"/>

ただし、2 つ目の問題があるようです。構成セクションの場合、実装するハンドラーが必要ですConfigurationSection

そのためには、新しいクラスを追加する必要があります。

Public Class ApplicationList  
Inherits ConfigurationSection

' You need to do the implementation. There are plenty of
' examples available on-line.

End Class

そして、それapp.configを使用するように指示します:

<section name="applicationList" type ="AbraMain.MyConfigHandler.ApplicationList, AbraMain"/>
于 2015-04-17T03:17:52.530 に答える