以编程方式在Visual Studio中打开文件(2010)

问题描述:

我正在构建一个VS包,并且我试图从包中向Visual Studio发送一个命令,以便在新选项卡中打开用户选择的文件(就像用户可以通过转到文件 - >打开...)来完成。以编程方式在Visual Studio中打开文件(2010)

我记得在某个时候看到了如何做到这一点。任何人都可以刷新我的记忆吗?

我相信你想要的一个:

  1. IVsUIShellOpenDocument.OpenStandardEditor
  2. DTE.OpenFile
  3. DTE.ItemOperations.OpenFile

最后,我想他们都归结为相同的行为。

+0

嗨克里斯......我不明白。我的DTE对象没有任何这些方法。如果我尝试创建一个新的DTE对象,它会给我一个错误。有什么建议么? – Andrei 2010-05-20 09:11:18

+0

你引用了哪些程序集(即,你的DTE类型来自哪里)?上面提到的'DTE'对象来自EnvDTE.dll,因此请尝试添加对此的引用。尝试创建新的'DTE'对象时得到的错误是什么?它是编译时还是运行时错误? – 2010-05-20 09:14:42

+1

我参考了所有的ENVDTE80/100组件。这个错误是编译时:无法创建抽象类或接口的实例'EnvDTE80.DTE2' 此外,我在一个VS包(因为我正在构建VS包)运行此。 – Andrei 2010-05-20 15:07:01

我喜欢用DTE方法ExecuteCommand(“命令名”),你可以测试在VS命令窗口

命令在这种情况下ExecuteCommand(“File.OpenFile”)

您可以添加如果需要,可以在第二个可选字符串参数中使用命令参数。

+0

不知何故,我找不到这种方法。它仍然在.NET 4中可用吗? – Andrei 2010-05-19 14:40:34

+0

我刚刚在VS2010中创建了一个插件 - 模板创建了一个私有变量: private DTE2 _applicationObject; 你可以从那里得到ExecuteCommand ... – philhobgen 2010-05-20 10:28:46

+0

啊,是的,我明白你的意思了。 现在我正在构建一个Visual Studio包。我也可以创建一个Visual Studio加载项,但是,如何创建加载项的实例,以便在VS包中使用,但加载项仍会保留其_applicationObject。 我希望你明白我的意思,它有点像使用WinForms应用程序中的加载项对象(_applicationObject)。 – Andrei 2010-05-20 12:56:12