【问题标题】:SGen can not generate an assembly for a valid typeSGen 无法为有效类型生成程序集
【发布时间】:2013-11-12 18:21:03
【问题描述】:

我有一个有效的 XmlSerializer 类型:

public class MyItem
{
  public MyItem() {
    Values = new List<string>();
  }

  public List<string> Values { get; private set; }
}

它成功序列化和反序列化(完整代码示例在这里http://ideone.com/s2PvSB)。但是,我无法为这种类型生成 .XmlSerializers.dll,SGen 失败:

Microsoft (R) Xml Serialization support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.33440]
Copyright (C) Microsoft Corporation. All rights reserved.
EXEC : error : Unable to generate a temporary class (result=1).
EXEC : error CS0200: Property or indexer 'TestSGen.MyItem.Values' cannot be assigned to -- it is read only

从 PostBuild 事件中调用的 SGen 为

"$(TargetFrameworkSDKToolsDirectory)SGen.exe" /Assembly:"$(TargetFileName)" /Type:"TestSGen.MyItem" /Force

这是 SGen 中的错误还是 [某处] 记录的行为?

【问题讨论】:

  • @HansPassant 这不是重复的。如您所见(请参阅我的帖子中的链接ideone.com/s2PvSB),我的代码工作正常,我的类型的序列化和反序列化工作正常。我在具有集合类型的属性上有一个私有设置器。这对于 XmlSerializer 很重要。我的问题是“为什么 SGen 失败”,而不是“为什么我的类型不能被序列化”——因为它可以。
  • 嗯,它被this KB-article覆盖了。它应该再次失败。
  • 谢谢!看起来 SGen 又坏了 :o(

标签: c# xml-serialization sgen


【解决方案1】:

这看起来很奇怪,因为链接的代码确实对我有用。 如果将List&lt;string&gt; 更改为string[],它将不起作用。 VS 对collection initializers 做了什么奇怪的事情吗?也许这可以让您的代码正常运行,但SGen 无法使用相同的技巧?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2017-07-12
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多