C#/ .NET,如何使用普通字符串操作以编程方式加载,编辑和保存源代码文件?

时间:2018-03-07 16:38:55

标签: c# envdte

在控制台应用中。

假设我有一个类源代码文件MyClass.cs。是否有一些API能够将此文件加载为"源代码文件/类"?我知道如何加载文件并读取其内容,我知道如何使用反射来读取类成员以及所有这些,但这两者都不是我需要的。

如果我只是加载并以字符串形式读取文件内容,我真的不想使用纯字符串操作。

我想/希望有一些API就像这个伪代码一样:

var sourceCodeClass = ReadFileAsSourceCode("{Path}/MyClass.cs");
sourceCodeClass.AddProperty([either string declaration or some strongly typed way of creating one with like 'SourceCodeProperty' or something]);
sourceCodeClass.OutputAsFile("{Path}/MyClass.cs");

或者其他什么。似乎这可以在EnvDTE区域中用于创建VS扩展,但我怀疑我的googlefu和文档都很弱。

1 个答案:

答案 0 :(得分:0)

您可以在运行时using CodeDom中编译C#。这也包含在Mono中。

CodeProvider将在编译代码时生成DLL文件。您可以使用AppDomain在运行时加载DLL。然后可以使用System.Type在汇编中找到System.Reflection.Assembly来编译代码的内容。

最后,您可以使用System.TypeSystem.Activator.CreateInstance()创建实例。