В моем проекте Visual Studio 2010 я использую следующую командную строку события Post-Build, чтобы использовать sgen для создания XmlSerializers.dll.XmlSerializer не использует XmlSerializers.dll, созданный sgen
Сообщение построить событие:
"$(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 во время выполнения. Я пришел к этому post, где у пользователя была аналогичная проблема и разрешена с помощью конструктора 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 erros на Выключение Windows. Мое приложение сохраняет данные при закрытии формы при завершении работы, так как Windows не разрешает запуск нового процесса во время последовательности выключения. Я видел рекомендации, чтобы обойти это, предварительно скомпилировав XML-сериализацию.
Любые предложения о том, почему XmlSerializer не использует XmlSerializers.dll, созданный sgen?
Спасибо.
Простейшим средством для устранения проблемы является загрузка данных при запуске. Используйте fuslogvw.exe для проверки разрешения сборки. –
Спасибо, мне нужно сохранить данные (сериализовать в XML) при закрытии MainForm. При нормальном закрытии пользователем все в порядке, нет ошибки, данные сериализованы. Однако, если мое приложение работает и выключено Windows, я вижу ошибки CSC.exe. – Din