Предварительная генерация XmlSerializer с использованием Sgen и ILMerge. Беда с массивами

Я широко использую XmlSerializer и вместо того, чтобы позволять .NET генерировать необходимые сборки сериализации во время выполнения,Я хотел бы сгенерировать эти сборки заранее и связать их с моим приложением. Я могу использовать Sgen для генерации этих сборок во время сборки. Кроме того, я должен запускать Sgen отдельно для каждого типа массива, который я буду сериализовать (используя sgen / t: Foo []). Наконец, я использую ILMerge для объединения классов сериализации типа массива в сборку Foo.XmlSerializers.dll. С помощью ildasm я проверил, что Foo.XmlSErializers.dll действительно содержит все объединенные классы.

Во время выполнения .NET успешно загружает FooSerializer из Foo.XmlSerializers.dll, не вызывая csc и не создавая временную сборку. Однако .NET не удается загрузить ArrayOfFooSerializer из той же библиотеки DLL и фактически вызывает csc.

Как я могу успешно предварительно сгенерировать типы сериализации для массивов?

Рассмотрим следующие 2 сборки и их упрощенное содержание:

Сборка: MyApp.exe

public class MyApp
{
    public static int Main(string[] args)
    {
        new XmlSerializer(typeof(Foo));
        new XmlSerializer(typeof(Foo[]));
    }
}

Сборка: Foo.dll

public class Foo
{

}

Дальнейшая информация:

Следующий app.config приводит к добавлению событий, связанных с XmlSerialization, в журнал событий.


   
     
      
      
     
  

Я не вижу событий для типа Foo. Я вижу следующее сообщение для Foo []:

Предварительно сгенерированный сериализаторFoo.XmlSerializers' истек Вам необходимо заново сгенерировать сериализатор дляFoo [].

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

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