XmlSerializer verwendet keine XmlSerializers.dll, die von sgen erstellt wurden

In meinem Visual Studio 2010-Projekt verwende ich die folgende Post-Build-Ereignisbefehlszeile, um sgen zum Erstellen von XmlSerializers.dll zu verwenden.

Postbuild-Ereignis:

<code>"$(ProgramFiles)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\sgen.exe" /a:"$(TargetPath)" /c:/keyfile:"c:\myproject\mykey.snk" /f
</code>

Mein Projekt hat einen starken Namen. Verwenden Sie also denselben Schlüssel, um die "XmlSerializers.dll" mit einem starken Namen zu versehen. VS erstellt die Datei XmlSerializers.dll im Ausgabeordner.

Bei der Verwendung von ProcessMonitor ist mir jedoch aufgefallen, dass .NET zur Laufzeit immer noch CSC.exe aufruft. Ich bin darauf gestoßenPost, wo der Benutzer ein ähnliches Problem hatte und es mit dem XmlSerializer (Type) -Konstruktor behoben hat.

Ich habe die gleiche Technik in meinem Code verwendet, aber immer noch csc.exe aufgerufen:

<code>var fs = new FileStream(SettingsFilePath, FileMode.Open);
try
{
var serializer = new XmlSerializer(typeof(AppSettings));
settings = (AppSettings)serializer.Deserialize(fs);
}
finally
{
fs.Close();
}
</code>

Der Grund, warum ich vorkompilierte XML-Serialisierung verwenden muss, liegt an der Leistung und ich habe manchmal csc.exe-Fehler beim Herunterfahren von Windows gesehen. Meine Anwendung speichert Daten, wenn das Formular geschlossen wird. Während des Herunterfahrens schlägt dies fehl, da Windows den Start eines neuen Prozesses während der Herunterfahrsequenz nicht zulässt. Ich habe Empfehlungen gesehen, um dies durch Vorkompilieren der XML-Serialisierung zu umgehen.

Irgendwelche Vorschläge, warum XmlSerializer nicht XmlSerializers.dll verwendet, das von sgen erstellt wurde?

Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage