我在制作VS插件,智能感应都不提示EnvDTE命名空间里的所有接口、类、方法等。例如如下代码:using System;
using System.Collections.Generic;
using System.Text;
using EnvDTE;namespace MyAddin2
{
    class Class1
    {
        Document document;
    }
}鼠标指向Document只提示interface EnvDTE.Document。而我去看MSDN,里面是有说明的“Represents a document in the environment open for editing.”如果光是这样我也认了,可是我下载了CopySourceAsHtml插件的源代码,用VS打开看,鼠标指向Document IDE就提示Represents a document in the environment open for editing.好奇怪啊,怎么回事?

解决方案 »

  1.   

    我知道了!
    1、我的插件代码是通过向导生成的,它给我添加的引用命名空间是在C:\Windows\assembly\GAC\……而事实上assembly里根本没有GAC这个文件夹,也不知道怎么回事。
    2、CopySourceAsHtml插件的源代码引用的EnvDTE是位于C:\Program Files\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\EnvDTE.dll。发现EnvDTE.dll的统计目录下有EnvDTE.xml,里面正保存了智能感应的提示!
    3、我在我的项目里把向导添加的EnvDTE卸载,再进手工添加,发现窗口中EnvDTE的路径是D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\EnvDTE.dll(路径的前面部分是VS的安装路径),同级目录下无响应的XML文件。重启VS,仍然无提示。
    4、复制C:\Program Files\Common Files\Microsoft Shared\MSEnv\PublicAssemblies\下的XML文件到D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\,重启VS,获得提示!总结,VS添加引用对话框.net选项夹里组件的位置从没有在C:\Windows\assembly\……。某个DLL组件要有相应的XML文件才会产生提示,所以当VS不提示某些东西的时候,可以去那个路径看看XML在不在。
    另外向导生成的项目可能不可靠,用时要多注意。