VS.NET集成环境插件开发指南之操纵VS开发环境
2、 操纵解决方案及其项目文档
l 获取当前被选中的项目
下面代码演示了鼠标点击一个项目,或项目中的子项时,如何得到该项目对象
public Project GetSelectedProject()
![]()
...{
![]()
Project project = null;
![]()
//从被选中对象中获取工程对象
![]()
EnvDTE.SelectedItem item = Application.SelectedItems.Item(1);
![]()
![]()
if(item.Project != null)
![]()
...{//被选中的就是项目本生
![]()
project = item.Project;
![]()
}
![]()
else
![]()
...{//被选中的是项目下的子项
![]()
project = item.ProjectItem.ProjectItems.ContainingProject;
![]()
}
![]()
return project;
![]()
}
![]()
·获取当前项目的所在目录
private string GetSelectedProjectPath()
![]()
...{
![]()
string path = "";
![]()
//获取被选中的工程
![]()
Project project = GetSelectedProject();
![]()
if(project != null)
![]()
...{
![]()
//全名包括*.csproj这样的文件命
![]()
path = project.FullName;
![]()
}
![]()
//去掉工程的文件名
![]()
path = Path.GetDirectoryName(path);
![]()
return path;
![]()
}
![]()
·将文件加入工程中
//获取被选中的工程
![]()
Project project = this.GetSelectedProject();
![]()
//将文件夹下的文件加入工程
![]()
project.ProjectItems.AddFromDirectory(sdir);
![]()
//将单个文件加入工程
![]()
project.ProjectItems.AddFromFile(nfile);
·向项目中加入程序集引用
using VSLangProj;
![]()
![]()
private void AddReference(string assembly)
![]()
...{
![]()
Project project = GetSelectedProject();
![]()
VSProject vsproject = null;
![]()
if (project.Kind == PrjKind.prjKindCSharpProject)
![]()
...{
![]()
//工程类型为C#工程,将project的Object成员转换为VSProject对象
![]()
vsproject = project.Object as VSProject;
![]()
}
![]()
if(vsproject != null)
![]()
...{
![]()
//获取C#工程的引用集
![]()
VSLangProj.References refers = vsproject.References;
![]()
if(refers != null)
![]()
...{
![]()
//将程序集引用添加到工程中
![]()
refers.Add(assembly);
![]()
}
![]()
}
![]()
}
0
相关文章
