Мы используем DesignSurface и все это хорошее IDesignerHost в нашем собственном дизайнере. Затем разработанные формы сохраняются в нашем собственном формате, и все это прекрасно работает. МЫ также хотим экспортировать формы в текстовый формат (что мы и сделали, так как это не так сложно).
Однако мы также хотим импортировать этот текст обратно в документ для дизайнера, что предполагает возвращение кода дизайнера в CodeCompileUnit. К сожалению, метод Parse не реализован (без сомнения, по уважительным причинам). Есть ли альтернатива? Мы не хотим использовать ничего, чего не было бы в стандартной установке .NET (например, библиотеки .NET, устанавливаемые вместе с Visual Studio).
Моя текущая идея состоит в том, чтобы скомпилировать импортированный текст, а затем создать экземпляр формы, скопировать ее свойства и элементы управления в объект области разработки и просто захватить новый CodeCompileUnit, но я надеялся, что есть лучший способ. Спасибо.
ОБНОВЛЕНИЕ: я думаю, что некоторые могут быть заинтересованы в нашем прогрессе. Пока что не так хорошо. Краткий обзор того, что я обнаружил, заключается в том, что метод Parse не был реализован, потому что он был сочтен слишком сложным, существуют синтаксические анализаторы с открытым исходным кодом, которые выполняют эту работу, но они не являются полными и, следовательно, не гарантируют работу во всех случаях ( Я полагаю, NRefactory — один из проектов SharpDevelop), и копирование элементов управления из экземпляра в конструктор пока не работает. Я полагаю, что это связано с тем, что, хотя элементы управления добавляются к экземпляру формы, который обертывает поверхность дизайнера, поверхность дизайнера не знает об их включении. Наша следующая попытка — имитировать вырезание/вставку, чтобы посмотреть, решит ли это проблему. Очевидно, что это огромный неприятный обходной путь, но нам нужно, чтобы он работал, поэтому мы примем удар и будем следить за альтернативами.