.net SGEN误差反射型
我已经实施了被接受的答复中提到的变更.net SGEN误差反射型,.net,xml-serialization,build-error,sgen,.net,Xml Serialization,Build Error,Sgen,我已经实施了被接受的答复中提到的变更 是否有任何方法可以获取生成错误的内部异常?正如Marc Gravell指出的,在bin目录中运行sgen/v MyClient.exe可以获得更多信息 该问题是由多个共享相同名称的类引起的,在本例中,两个表单都实现了相同的MicroContact类,因为一个表单是从另一个表单复制的。如前一个答案中所述-最常见的问题是重复的类型名称。然而,解决这一问题的方法多种多样: 通过[XmlType(“NewTypeName”)] 为序列化类型声明[System.Xm
是否有任何方法可以获取生成错误的内部异常?正如Marc Gravell指出的,在bin目录中运行
sgen/v MyClient.exe
可以获得更多信息
该问题是由多个共享相同名称的类引起的,在本例中,两个表单都实现了相同的MicroContact类,因为一个表单是从另一个表单复制的。如前一个答案中所述-最常见的问题是重复的类型名称。然而,解决这一问题的方法多种多样:
- 通过
[XmlType(“NewTypeName”)]
- 为序列化类型声明
属性[System.Xml.Serialization.XmlType(AnonymousType=true)]
- 为其中一个复制类型定义名称空间-例如,如果它用于XML元素类型,则使用
[XmlElement(名称空间=”http://example.com”)
如果您以另一种方式解决了这个问题,我很想知道。老实说,我不知道
任务,但是您是否尝试过在命令行中使用/v
开关运行sgen?如果您在XML序列化属性中列出了重复的XML属性、元素和类型名称,也可能发生这种情况
<Target Name="AfterBuild" DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" Outputs="$(OutputPath)$(_SGenDllName)">
<!-- Delete the file because I can't figure out how to force the SGen task. -->
<Delete Files="$(TargetDir)$(TargetName).XmlSerializers.dll" ContinueOnError="true" />
<SGen BuildAssemblyName="$(TargetFileName)" BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)" ShouldGenerateSerializer="true" UseProxyTypes="false" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)" Platform="$(Platform)">
<Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" />
</SGen>
</Target>
Public Class MicroContact
Implements IComparable
Private _id As Long
Private _name As String
Public Property Id() As Long
Get
Return _id
End Get
Set(ByVal value As Long)
_id = value
End Set
End Property
Public Property NoTitleFullName() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Sub New()
_name = ""
End Sub
Public Sub New(ByVal id As Long, ByVal name As String)
_id = id
_name = name
End Sub
Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
Return String.Compare(Me.NoTitleFullName, CType(obj, MicroContact).NoTitleFullName, True)
End Function
End Class