如何在没有 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/
关于 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/