C# Visual Studio 2010 EnvDTE.EditPoint插入函数返回';HRESULT异常:0x80041001';
概述: Microsoft Visual Studio本身就是一种工具。双关语。我正在尝试从System.Windows.Window中使用EnvDTE,该System.Windows.Window用作Visual Studio的插件。我不想访问创建插件的项目,而是在使用窗口时当前打开的项目(完全不同的问题)。无论如何,我在EnvDTE.EditPoint.Insert()方法中遇到了一个问题,每当我尝试使用它时,我都会从HRESULT:0x80041001“”获取异常“COM exception was Capture” 这是我的密码:C# Visual Studio 2010 EnvDTE.EditPoint插入函数返回';HRESULT异常:0x80041001';,c#,.net,visual-studio-2010,visual-studio,C#,.net,Visual Studio 2010,Visual Studio,概述: Microsoft Visual Studio本身就是一种工具。双关语。我正在尝试从System.Windows.Window中使用EnvDTE,该System.Windows.Window用作Visual Studio的插件。我不想访问创建插件的项目,而是在使用窗口时当前打开的项目(完全不同的问题)。无论如何,我在EnvDTE.EditPoint.Insert()方法中遇到了一个问题,每当我尝试使用它时,我都会从HRESULT:0x80041001“”获取异常“COM exceptio
public class DTEHelper
{
static private DTE _dte = null;
static private AddIn _addIn = null;
static private ProjectItem _pItem = null;
static private TextDocument _tDoc = null;
static private EditPoint _ePoint = null;
static private Project _projP = null;
static private SolutionBuild _sBuild = null;
public DTE dte { get { return _dte; } set { _dte = value; } }
public AddIn addIn { get { return _addIn; } set { _addIn = value; } }
public ProjectItem pItem { get { return _pItem; } set { _pItem = value; } }
public TextDocument tDoc { get { return _tDoc; } set { _tDoc = value; } }
public EditPoint ePoint { get { return _ePoint; } set { _ePoint = value; } }
public Project projP { get { return _projP; } set { _projP = value; } }
public SolutionBuild sBuild { get { return _sBuild; } set { _sBuild = value; } }
}
问题方法:
private void addMethod(string file, DTEHelper dteHelper)
{
try
{
//Open existing file
System.Array projectFiles = (System.Array)dteHelper.dte.ActiveSolutionProjects;
EnvDTE.Project project = null;
if (projectFiles.Length > 0)
{
project = (EnvDTE.Project)(projectFiles.GetValue(0));
dteHelper.pItem = (from ProjectItem csFile in project.ProjectItems where csFile.Name.Contains(file) select csFile).First();
if (dteHelper.pItem.Name.Contains(".cs"))
{
EnvDTE.Window window = dteHelper.pItem.Open(Constants.vsViewKindCode);
TextDocument document = (TextDocument)window.Document.Object("TextDocument");
EditPoint edit = (EditPoint)document.CreateEditPoint();
edit.EndOfDocument();
edit.LineUp();
edit.Insert(""); //Problem Right Here
string fileName = dteHelper.pItem.get_FileNames(0);
dteHelper.pItem.SaveAs(fileName);
}
}
}
catch (Exception e)
{
MessageBox.Show(string.Format(System.Globalization.CultureInfo.CurrentUICulture, "Failed to add code to: " + file, this.ToString()),
"ERROR");
}
}
按下窗口中的按钮时,dteHelper.dte初始化
dteHelper.dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.10.0");
结果证明一切正常,唯一的问题是我搜索的文件('foo.cs')不在项目中(编译器无法识别),因此我必须将其添加到解决方案中