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

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

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

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

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

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

Я использовал ту же технику. в моем коде, но он по-прежнему вызывает csc.exe:

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

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

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

Спасибо.

7
задан Community 23 May 2017 в 12:22
поделиться