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