为什么VS插件项目智能感应不提示文字说明?

自问:

我在制作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. 我的插件代码是通过向导生成的,它给我添加的引用的命名空间是在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在不在。 
另外向导生成的项目可能不可靠,用时要多注意。

你可能感兴趣的:(xml,assembly,System,Class,interface,envdte)