如何强制Sgen创建.net 3.5序列化程序程序集

问题描述 投票:2回答:2

。NET 3.5库中有一个sgen构建步骤。在VS2010中,这将生成无法从.NET 3.5应用程序加载的.NET 4 MyLib.XmlSerializers.dll。有谁知道如何更改构建步骤以获取正确的程序集版本? IL是否可以将序列化程序的程序集和库合并到单个dll中?

这是我的sgen构建步骤:

<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)">
      <Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" />
    </SGen>
  </Target>

谢谢

编辑:我发现了相同的问题here,但是我要等一会儿,看看有人是否有更好的解决方案。

c# visual-studio-2010 sgen
2个回答
4
投票

您可以使用.NET 3.5 sgen.exe

ToolPath="C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin"

您将需要确保包含要sgen类型的程序集的目标是.NET 3.5。


0
投票

在发布模式下构建失败的情况下,使用VS2019,我想设置SGEN路径,有人可以帮助我找到sgen工具路径并进行更新。

© www.soinside.com 2019 - 2024. All rights reserved.