XmlSerializer nie używa XmlSerializers.dll utworzonego przez sgen

W moim projekcie Visual Studio 2010 używam następującego wiersza komend zdarzenia Post-Build, aby użyć sgen do utworzenia XmlSerializers.dll.

Zdarzenie po kompilacji:

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

Mój projekt ma silną nazwę, więc używaj tego samego klucza do silnej nazwy „XmlSerializers.dll”. VS tworzy plik XmlSerializers.dll w folderze wyjściowym.

Zauważyłem jednak, że przy użyciu ProcessMonitor .NET nadal wywołuje CSC.exe w czasie wykonywania. Przeszedłem przez tosłupek, gdzie użytkownik miał podobny problem i rozwiązany za pomocą konstruktora XmlSerializer (Type).

Użyłem tej samej techniki w moim kodzie, ale wciąż wywołuje csc.exe:

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

Powód, dla którego muszę użyć prekompilowanej serializacji XML z powodu wydajności, a także widziałem czasami csc.exe podczas zamykania systemu Windows. Moja aplikacja zapisuje dane po zamknięciu formularza, podczas zamykania kończy się niepowodzeniem, ponieważ system Windows nie zezwoli na uruchomienie nowego procesu podczas sekwencji zamykania. Widziałem zalecenia, aby obejść to, prekompilując serializację XML.

Wszelkie sugestie dotyczące dlaczego XmlSerializer nie używa XmlSerializers.dll utworzony przez sgen?

Dzięki.

questionAnswers(3)

yourAnswerToTheQuestion