2010-07-28 77 views
2

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

这是我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,但我会等待一段时间,看看是否有人有更好的解决方案。

回答

4

你可以使用.NET 3.5 sgen.exe

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

您需要确保包含要类型sgen大会的目标是.NET 3.5。

+3

有没有像$(SGen35ToolPath)的东西,或者我必须硬编码这个路径? – Marko 2010-07-28 07:47:51

+0

你在哪里指定刀具路径? 'ToolPath = ...'对我来说没有任何意义...... – 2012-11-09 13:50:15