SGEN XMLSerializer - должен быть .XMLSerializers.dll добавлен как ссылка на текущий проект или на GAC?

Я делаю некоторый материал с классом XMLSerializer. Как большинство новичков я сталкиваюсь с проблемой производительности о приложении, запускаются. Я прочитал много блогов, статей и наконец использую инструмент SGEN. Теперь производительность надеется быть в порядке, но немного вещей все еще не ясны для меня.

1) Если я использую синтаксис SGEN как это:

SGen.exe /assembly:MyAssembly /type:MyRootXmlType

или это достаточно только к (я в настоящее время использую этот синтаксис, у меня есть только один сериализуемый класс в моем блоке):

SGen.exe /assembly:MyAssembly

Когда параметр типа / может быть полезным на практике?

2) Я читал на MSDN (http://msdn.microsoft.com/en-us/library/ee704594.aspx)

Эта команда генерирует блок сериализатора MyAssembly.XmlSerializers.dll, который должен быть добавлен как ссылка на текущий проект или на GAC.

но на всех других блогах и статьях (например, на ТАК) я считал, что достаточно, чтобы просто поместить MyAssembly.XmlSerializers.dll в папку, где MyAssembly существует.

Таким образом, что является правильным?

3) Достаточно просто генерировать .XmlSerilizers.dll и развернуть его вместе с MyAssembly, или я должен добавить что-то к своему коду уже?

Я не думаю так, но я хотел бы быть уверенным, что я не должен буду изменять свой код, и "волшебство" происходит автоматически.

7
задан binball 30 March 2010 в 08:26
поделиться

1 ответ

Если вы не используете аргумент / type для sgen.exe, он сгенерирует код де / сериализации для все общедоступные типы в сборке. Обратите внимание, что атрибут [Serializable] не используется в сериализации XML. Я сомневаюсь, что вам это нужно, используйте / type, чтобы сгенерированная сборка была небольшой.

Добавлять ссылку не обязательно, XML-сериализация всегда пытается использовать Assembly.Load () для сборки .XmlSerializers.dll. Кроме того, вы никогда не будете ссылаться на сгенерированные классы XmlSerializationWriterXxx и XmlSerializationReaderXxx непосредственно в своем коде. У него есть одно преимущество: система сборки автоматически копирует сборку, когда вы включаете проект в решение.

Об установке его в GAC стоит подумать только тогда, когда разные приложения сериализуют и десериализуют XML-файл. Вы можете предоставить другим приложениям сборку .XmlSerializers.dll, скопировав сборку вручную. Это немного подвержено ошибкам, используйте здесь свое собственное суждение. Посмотрите предыдущий абзац, чтобы узнать, как автоматизировать копирование.

9
ответ дан 7 December 2019 в 03:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: