首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sgen.exe如何决定为哪些类型生成序列化程序?

sgen.exe如何决定为哪些类型生成序列化程序?
EN

Stack Overflow用户
提问于 2011-07-19 06:17:15
回答 2查看 625关注 0票数 0

您可以使用sgen.exe提前创建序列化程序集,而不是动态创建它们。

但是它如何决定为哪些类型制作序列化程序呢?我尝试切换到使用sgen,但它一直告诉我,它找不到任何适用的类型。有没有你必须添加的属性?或者我需要手动指定类型?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-19 06:35:50

我猜这是因为类型不是公共的- XML序列化只适用于公共类型。

票数 1
EN

Stack Overflow用户

发布于 2017-03-22 06:40:55

VS触发的sgen (即通过属性->构建->生成序列化程序集)不能实际生成序列化程序集的最常见原因是,VS中默认的Sgen构建任务默认包含/proxytypes开关,并且没有办法将其关闭。此开关告诉sgen仅为Xml服务代理类型生成序列化程序,如文档中的here所示。若要为其他类型生成序列化程序,可以通过添加自己的自定义任务来重写默认行为,如Generating an Xml Serialization assembly as part of my build中所述。您可以更进一步,只指定您希望通过类型参数为其生成序列化代码的类型,例如:

代码语言:javascript
复制
<PropertyGroup>
<!-- Specific set of types to create serialization assemblies for -->
<SerializationTypes>
    Type1;
    Type2
</SerializationTypes>
</PropertyGroup>
<!-- Custom non-proxy SGEN invocation to create pre-compiled serialization assemblies -->
<Target Name="GenerateNonProxySerializationAssemblies"
DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource"
Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)"
Outputs="$(OutputPath)$(_SGenDllName)">
    <SGen BuildAssemblyName="$(TargetFileName)" Types="$(SerializationTypes)"
        BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)"
        ShouldGenerateSerializer="true" UseProxyTypes="false"
        KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)"
        DelaySign="$(DelaySign)" ToolPath="$(SGenToolPath)">
        <Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" />
    </SGen>
</Target>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6740106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档