是否存在将源代码转换回CodeCompileUnit的现有方法?

Jef*_*tes 6 c# serialization code-generation designer winforms

我们在自己的设计师中使用DesignSurface和所有优秀的IDesignerHost优点.然后,设计的表格将以我们自己的定制格式保存,并且所有这些都非常有用.我们还希望将表单导出为基于文本的格式(我们已经完成了,因为它并不困难).

但是,我们还希望将该文本导入设计器的文档中,该文档涉及将设计器代码重新放回CodeCompileUnit.不幸的是,Parse方法没有实现(毫无疑问,很好的理由).还有其他选择吗?我们不想使用标准.NET安装中不存在的任何东西(比如用Visual Studio安装的.NET库).

我目前的想法是编译导入的文本然后实例化表单并将其属性和控件复制到设计表面对象,并只捕获新的CodeCompileUnit,但我希望有更好的方法.谢谢.


更新:我可能会对我们的进展感兴趣.到目前为止,还不是那么好.我发现的一个简要概述是Parse方法没有实现,因为它被认为太难了,开源解析器存在,但是它们不完整,因此无法保证在所有情况下都能工作( NRefactory是SharpDevelop项目中的一个,我相信,并且从实例到设计器的控件复制工作尚未完成.我相信这是因为虽然控件被添加到设计器表面包装的表单实例中,但设计者表面并未意识到它们的包含.我们的下一个尝试是模仿剪切/粘贴,看看是否能解决它.显然,这是一个巨大的讨厌的解决方法,但我们需要它工作,所以我们'

Sco*_*ski 2

您始终可以编写自己的 C# 解析器。这样您就可以确定它的完整性。

就您而言,因为您不需要像智能感知这样的东西,所以您可能只需使用解析器生成器就可以逃脱。

然而,即使你手写一个,也可能不会超过一个月。