如何在没有 Addin 基础结构的情况下使用 Visual Studio FileCodeModel?

How to use Visual Studio FileCodeModel without the Addin infrastructure?

关于 Visual Studio 可扩展性的所有示例都传入了一个 DTE2 对象,如下所示:

public void OnConnection(object application, ...)
{
    _applicationObject = (DTE2)application;
    ...
}

如果没有通过插件传入的 DTE2 对象,是否无法访问 FileCodeModel 对象?我想编写一个独立的 C# 控制台应用程序(不使用 VS Addin 基础结构),它读取 .cs 文件并使用 FileCodeModel class.

解析它
FileCodeModel fileCM = dte.ActiveDocument.ProjectItem.FileCodeModel; 

当然,为了使上述工作正常,dte 对象必须可用。相反,难道没有像下面的 fictional 那样不依赖 DTE2 对象的方法吗?

FileCodeModel fileCM = new FileCodeModel.ReadCsFile(filepathname);

(PS:我知道 Visual Studio 2013 年情况发生了变化,但我仍在使用 Visual Studio 2010 年。)

您需要一个DTE实例才能使用代码模型,但您可以在VS外获取一个DTE实例:

HOWTO:从 IDE 外部自动化 Visual Studio .NET。 http://www.visualstudioextensibility.com/articles/add-ins/

您也可以在没有 Visual Studio 的情况下使用 .NET 编译器平台 ("Roslyn"):

http://www.visualstudioextensibility.com/documentation/compiler/

http://www.visualstudioextensibility.com/articles/compiler/

http://www.visualstudioextensibility.com/videos/compiler/