XmlSerializer не использует XmlSerializers.dll, созданный sgen

В моем проекте Visual Studio 2010 я использую следующую командную строку события Post-Build, чтобы использовать sgen для создания XmlSerializers.dll.

Событие после сборки:

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

Мой проект имеет строгое имя, поэтому используйте тот же ключ для строгого имени & quot; XmlSerializers.dll & quot ;. VS создает XmlSerializers.dll в выходной папке.

Тем не менее, я заметил, что с помощью ProcessMonitor .NET по-прежнему вызывает CSC.exe во время выполнения. Я наткнулся на этосообщениегде у пользователя была похожая проблема, и она была решена с помощью конструктора XmlSerializer (Type).

Я использовал ту же технику в своем коде, но он все еще вызывает 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>

Причина, по которой мне нужно использовать прекомпилированную сериализацию XML, из-за производительности, а также я иногда видел ошибки csc.exe при завершении работы Windows. Мое приложение сохраняет данные при закрытии формы, во время завершения работы происходит сбой, поскольку Windows не позволяет запускать новый процесс во время последовательности завершения работы. Я видел рекомендации, чтобы обойти это путем предварительной компиляции XML-сериализации.

Любые предложения о том, почему XmlSerializer не использует XmlSerializers.dll, созданный sgen?

Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос