【问题标题】:XML Serialization assembly for non-web projects用于非 Web 项目的 XML 序列化程序集
【发布时间】:2012-04-03 17:32:28
【问题描述】:

我正在尝试解决 VS 2010(VB.NET 和 C#)中自动生成的序列化程序集这一众所周知的问题。项目设置中的“生成序列化程序集”选项对非 Web 项目没有任何作用(参见 http://blog.devstone.com/aaron/archive/2008/02/07/2778.aspx 等)。因此,对序列化程序的调用会生成非常不幸的文件 i/o 异常,并且无法治愈。上面建议的方法似乎不适用于 VS2010,并且 SGEN 仍然在启用 /proxytypes 的情况下运行。

【问题讨论】:

    标签: c# vb.net serialization msbuild sgen


    【解决方案1】:

    解决方案:

    像往常一样在项目设置中将“生成序列化程序集”设置为ON,然后将此xml添加到.proj文件中:

    <PropertyGroup>
        <SGenUseProxyTypes>false</SGenUseProxyTypes>
        <SGenPlatformTarget>$(Platform)</SGenPlatformTarget>
    </PropertyGroup>
    

    第一行关闭了邪恶的 /proxytypes 开关。如果选择的平台不是 AnyCPU,则需要第二行。如果省略,则序列化程序集是使用 AnyCPU 构建的,并且无法绑定到可能是 x86 或 x64 的主程序集。

    【讨论】:

    • +1 这很有帮助!对我们来说有点担心的一件事是我们有生成序列化程序集的项目,并且我们没有指定 SGenPlatformTarget。然而 x86 平台说明符包含在程序集中而不是 AnyCPU 中,不确定为什么会发生这种情况。任何见解都会很棒 alexkai
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多