Acabo de actualizar un proyecto de VS2008 a VS2010, pero todavía estoy apuntando al framework 3.5.Cómo configurar la ruta de acceso de SGEN en Msbuild al framework de destino 3.5
En mi archivo de proyecto tengo una tarea personalizada para ejecutar SGEN y generar mis XmlSerializers.dll. Sin embargo, la versión de sgen que se ejecuta se dirige al marco 4.0. Como resultado, cuando ejecuto mi aplicación recibo el mensaje de error:
"No se pudo cargar el archivo o ensamblado 'XXXX.XXXX.XmlSerializers' o una de sus dependencias. Este ensamblado está creado por un tiempo de ejecución más nuevo que el actual tiempo de ejecución cargado y no se puede cargar ".
La tarea Sgen se parece a esto:
<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>
Ahí está la trayectoria de la herramienta = "$ (SGenToolPath)". ¿Cómo hago para ejecutar la versión que apunta a 3.5?
Hay una pregunta similar here pero no me ayuda mucho.
Nota rápida a otros que terminan aquí basado en el mensaje de excepción: si usted no necesita los XmlSerializers montaje puede simplemente desactivar su creación en la pestaña de construcción del proyecto. – Myster
P.S. si configura Generar conjunto de serialización en "off", recuerde hacerlo para configuraciones de versión y depuración (o relevantes). – Myster