最近在做Visual Studio项目和项模板需要用到一些EnvDTE的技术,把相关代码拿出来和大家分享一下
首先是获取Visual Studio实例
在仅打开了一个实例的情况下,用GetActiveInstance即可,在打开了多个实例的情况下,可以用另外一个函数获得所有实例
这里有一个问题,如果打开了多个Visual Studio,如何知道当前正在操作的Visual Studio实例?
答案令人失望,没有什么好办法。 如果有人知道可以分享一下。
有一个变通的办法,通过打开的解决方案的名称来区分,即通过Solution Name来找到某一个VS的实例。当然,前提是要知道这个Solution的名字,于是又陷入了死循环。
然后就是找到一个特定的项目(需要传入项目特征字符或者完整名称)
然后把文件或者引用加到项目中
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using EnvDTE;
using EnvDTE80;
using VSLangProj;
namespace Template.AddNewItemWizard
{
class EnvDTEHelper