Ich habe gerade ein Projekt von VS2008 auf VS2010 aktualisiert, aber ich ziele immer noch auf das 3.5 Framework.Wie man SGGEN Werkzeugweg in Msbuild zum Ziel 3.5 Rahmenwerk einstellt
In meiner Projektdatei habe ich eine benutzerdefinierte Aufgabe, um SGEN zu starten, um meine XmlSerializers.dll zu generieren. Die Version von sgen, die ausgeführt wird, zielt jedoch auf das Framework 4.0 ab. Als Ergebnis, wenn ich meine Anwendung ausführen, erhalte ich die Fehlermeldung:
"Konnte Datei oder Assembly 'XXXX.XXXX.XmlSerializers' oder eine seiner Abhängigkeiten nicht laden. Diese Assembly wird durch eine Laufzeit neueren als die derzeit erstellt Laufzeit geladen und kann nicht geladen werden. "
Die Sgen Aufgabe sieht wie folgt aus:
<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>
Es gibt die ToolPath = "$ (SGenToolPath)". Wie kann ich die Version ausführen, die 3.5 anvisiert?
Es gibt eine ähnliche Frage here, aber es hilft mir nicht viel.
Kurzer Hinweis für andere, die aufgrund der Ausnahmebedingungsnachricht hier enden: Wenn Sie die XmlSerializers-Assembly nicht benötigen, können Sie sie einfach auf der Registerkarte "Build" des Projekts deaktivieren. – Myster
P.S. Wenn Sie die Option Serialisierungsassemblierung aktivieren auf "Aus" setzen, denken Sie daran, dies sowohl für die Release- als auch für die Debugging- (oder relevante) Konfigurationen zu tun. – Myster