Winforms Visual Studio错误地将数据添加到Resx文件
我有一个名为DocumentExplorerControl的自定义用户控件,它有几个属性,其中一个叫做HistoryList。如果我对包含此控件的任何窗体进行任何更改,生成将失败,并出现以下错误:Winforms Visual Studio错误地将数据添加到Resx文件,winforms,visual-studio,visual-studio-2012,visual-studio-2013,Winforms,Visual Studio,Visual Studio 2012,Visual Studio 2013,我有一个名为DocumentExplorerControl的自定义用户控件,它有几个属性,其中一个叫做HistoryList。如果我对包含此控件的任何窗体进行任何更改,生成将失败,并出现以下错误: Invalid Resx file. Could not load type System.Collections.Generic.List`1[[xxxxxx.DocumentManager.IHistoryObject, xxxxxx, Version=4.0.5207.25065, Cultur
Invalid Resx file. Could not load type System.Collections.Generic.List`1[[xxxxxx.DocumentManager.IHistoryObject, xxxxxx, Version=4.0.5207.25065, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 which is used in the .RESX file.
我可以双击错误,然后转到.resx文件中的问题:
<data name="documentsList.HistoryList" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAJkBQURNU19EZXNrdG9wLCBWZXJzaW9uPTQuMC41MjA3LjI1MDY1
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXSwgbXNjb3JsaWIsIFZlcnNpb249
NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5DAMA
AABKQURNU19EZXNrdG9wLCBWZXJzaW9uPTQuMC41MjA3LjI1MDY1LCBDdWx0dXJlPW5ldXRyYWwsIFB1
YmxpY0tleVRva2VuPW51bGwFAQAAAE5TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW0FE
TVNfRGVza3RvcC5Eb2N1bWVudE1hbmFnZXIuSUhpc3RvcnlPYmplY3QDAAAABl9pdGVtcwVfc2l6ZQhf
dmVyc2lvbgQAAC1BRE1TX0Rlc2t0b3AuRG9jdW1lbnRNYW5hZ2VyLklIaXN0b3J5T2JqZWN0W10DAAAA
CAgCAAAACQQAAAAAAAAAAAAAAAcEAAAAAAEAAAAAAAAABCtBRE1TX0Rlc2t0b3AuRG9jdW1lbnRNYW5h
Z2VyLklIaXN0b3J5T2JqZWN0AwAAAAs=
</value>
</data>
IHistoryObject:
Public Interface IHistoryObject
Property FolderList As List(Of IFolder)
Property DocumentList As List(Of IDocument)
Property DefaultHandler As IDocumentHandler
Property FolderName As String
End Interface
IFolder:
Public Interface IFolder
Property FolderName() As String
Property SubFolders() As List(Of IFolder)
Property Documents() As List(Of IDocument)
Property DefaultDocumentHandler() As IDocumentHandler
End Interface
i文件:
Public Interface IDocument
Property DocumentName() As String
Property DocumentType() As DocumentType
Property DocumentLocation() As DocumentLocation
Property ScreenLocation() As ScreenLocation
Property DocumentIdentifier() As String
Property Compressed() As Boolean
Property DocumentHandler() As IDocumentHandler
Property UsedDocumentId() As Integer
Property PrivateDocument() As Boolean
Property SavedDate() As DateTime
Property KnowledgeLakeDocumentTypeId() As Integer?
Property KnowledgeLakeDocumentClassId() As Integer?
Property RequiresFollowUp() As Boolean
Property Comments() As String
Property DevelopmentKey() As Integer
Property Version() As Integer
Property MonitoringId() As Integer?
Property FollowUpDate() As Date?
Property FollowUpUsers As List(Of Integer)
End Interface
IDocumentHandler:
Public Interface IDocumentHandler
Sub Open(document As IDocument)
Sub OpenVersion(sourceTableId As Integer, fileName As String)
Function Delete(document As IDocument, Optional saveHistory As Boolean = True) As DocumentAddReturnData
Sub SaveToDisk(document As IDocument, filePath As String, openWhenDone As Boolean)
Function Add(documentBinary As Byte(), ByRef document As IDocument) As DocumentAddReturnData
Function Replace(existingDocument As IDocument, newDocument As Byte(), fileName As String) As DocumentAddReturnData
Function Replace(documentId As Integer, newDocument As Byte()) As DocumentAddReturnData
Function FileNameExists(fileName As String, Optional developmentKey As Integer = 0, Optional monitoringKey As Integer = 0) As DocumentConstants.FileNameExists
Function FilePathExists(filePath As String, Optional developmentKey As Integer = 0, Optional monitoringKey As Integer = 0) As DocumentConstants.FileNameExists
Function AppendFileNumber(fileName As String, Optional developmentKey As Integer = 0, Optional monitoringKey As Integer = 0) As String
End Interface
虽然HistoryList的签名没有初始化新集合,控件的构造函数也没有初始化新集合,但从控件的load事件调用的函数确实初始化了新集合,因此我必须使用
如果不是Me.DesignMode
来避免初始化 虽然HistoryList的签名没有初始化新集合,控件的构造函数也没有初始化新集合,但从控件的load事件调用的函数确实初始化了新集合,因此我必须使用如果不是Me.DesignMode
来避免初始化 虽然HistoryList的签名没有初始化新集合,控件的构造函数也没有初始化新集合,但从控件的load事件调用的函数确实初始化了新集合,因此我必须使用如果不是Me.DesignMode
来避免初始化 虽然HistoryList的签名没有初始化新集合,控件的构造函数也没有初始化新集合,但从控件的load事件调用的函数确实初始化了新集合,因此我必须使用如果不是Me.DesignMode
来避免初始化
版本=4.0.5207.25065
这就是导致错误的原因。您正在让包含DocumentManager.IHistoryObject实现类型的程序集的[AssemblyVersion]属性自动递增。它看起来类似于AssemblyInfo.vb源文件中的
。因此,每次重建时,程序集都会获得不同的版本号。这会对序列化数据造成严重破坏,它仍然包含使用原始版本号序列化的数据。因此不再兼容。设计器在尝试反序列化.resx文件中的数据时失败
因此,如果要保留.resx文件,则需要禁用此自动递增。然而,这听起来像是偶然的,你根本不希望发生这种事。使用DesignMode属性测试是一种变通方法,但不是正确的方法。您可以简单地告诉设计器不要保存数据。您可以使用以下属性执行此操作:
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
<Browsable(False)> _
Public Property History As List(Of IHistoryObject)
_
_
公共财产历史记录作为列表(IHistoryObject)
[Browsable]属性还可以防止在“属性”窗口中编辑属性时发生意外
版本=4.0.5207.25065
这就是导致错误的原因。您正在让包含DocumentManager.IHistoryObject实现类型的程序集的[AssemblyVersion]属性自动递增。它看起来类似于AssemblyInfo.vb源文件中的
。因此,每次重建时,程序集都会获得不同的版本号。这会对序列化数据造成严重破坏,它仍然包含使用原始版本号序列化的数据。因此不再兼容。设计器在尝试反序列化.resx文件中的数据时失败
因此,如果要保留.resx文件,则需要禁用此自动递增。然而,这听起来像是偶然的,你根本不希望发生这种事。使用DesignMode属性测试是一种变通方法,但不是正确的方法。您可以简单地告诉设计器不要保存数据。您可以使用以下属性执行此操作:
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
<Browsable(False)> _
Public Property History As List(Of IHistoryObject)
_
_
公共财产历史记录作为列表(IHistoryObject)
[Browsable]属性还可以防止在“属性”窗口中编辑属性时发生意外
版本=4.0.5207.25065
这就是导致错误的原因。您正在让包含DocumentManager.IHistoryObject实现类型的程序集的[AssemblyVersion]属性自动递增。它看起来类似于AssemblyInfo.vb源文件中的
。因此,每次重建时,程序集都会获得不同的版本号。这会对序列化数据造成严重破坏,它仍然包含使用原始版本号序列化的数据。因此不再兼容。设计器在尝试反序列化.resx文件中的数据时失败
因此,如果要保留.resx文件,则需要禁用此自动递增。然而,这听起来像是偶然的,你根本不希望发生这种事。使用DesignMode属性测试是一种变通方法,但不是正确的方法。您可以简单地告诉设计器不要保存数据。您可以使用以下属性执行此操作:
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
<Browsable(False)> _
Public Property History As List(Of IHistoryObject)
_
_
公共财产历史记录作为列表(IHistoryObject)
[Browsable]属性还可以防止在“属性”窗口中编辑属性时发生意外
版本=4.0.5207.25065
这就是导致错误的原因。您正在让包含DocumentManager.IHistoryObject实现类型的程序集的[AssemblyVersion]属性自动递增。它看起来类似于AssemblyInfo.vb源文件中的
。因此,每次重建时,程序集都会获得不同的版本号。这会对序列化数据造成严重破坏,它仍然包含使用原始版本号序列化的数据。因此不再兼容。设计器在尝试反序列化.resx文件中的数据时失败
因此,如果要保留.resx文件,则需要禁用此自动递增。然而,它听起来像t