Я только что обновил проект с VS2008 до VS2010, но я все еще нацелен на структуру 3.5.
В моем файле проекта у меня есть настраиваемая задача для запуска SGEN для создания моего XmlSerializers.dll. Однако версия sgen, запускаемая, нацелена на платформу 4.0. В результате, когда я запускаю свое приложение, я получаю сообщение об ошибке:
"Невозможно загрузить файл или сборку" XXXX.XXXX.XmlSerializers "или одну из его зависимостей. Эта сборка построена с использованием среды выполнения, более новой, чем текущая загруженная среда выполнения и не может быть загружена".
Задача 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>
Там ToolPath = "$ (SGenToolPath)" . Как заставить запустить версию, предназначенную для 3.5?
Здесь есть аналогичный вопрос , но мне это не очень помогает.