EnvDTE SolutionFolder AddFromFile显示错误消息

时间:2019-03-15 09:49:51

标签: c# envdte

我想使用DTE将一些项目添加到解决方案中。这是WPF应用程序,不是扩展程序。

我必须将一些项目添加到一个文件夹,然后将另一个项目添加到另一个文件夹,最后一个项目添加到另一个文件夹。

将项目添加到第一个文件夹时,一切正常。但是,当我将项目添加到另一个文件夹时,将弹出消息框,指出:“操作无法完成:无效的窗口句柄。”

单击“确定”后,我得到另一个消息框:“操作无法完成:未指定的错误”。

但是,所有项目都已成功添加到解决方案中。因此,最大的问题是在执行作业时弹出的消息框。读完“无效的窗口句柄”后,我认为也许应该尝试对主线程进行所有操作。但是结果是一样的。另外,Visual Studio的“输出”窗口中没有消息。这是我的代码:

(DoFunction和DoAction是将内容包装到try..catch中的简单方法,如果存在RPC_E_SERVERCALL_RETRYLATER异常,将再次尝试)

//Getting DTE Service
dteService = DoFunction(() =>(DTE2)Activator.CreateInstance(Type.GetTypeFromProgID("VisualStudio.DTE.15.0", true), true));

//Getting the solution
activeSolution = DoFunction(() => dteService.Solution as Solution4);
DoAction(() =>activeSolution.Open(solutionPath));

ActiveSolution是我的私人领域。

//Adding project to solution:
DoAction(() =>
{
    SolutionFolder folder = GetExistingSolutionFolder(folderTree);
    if (folder == null)
        activeSolution.AddFromFile(projectFileName);
    else
        folder.AddFromFile(projectFileName); //<-- messagebox popups here
});           

项目被添加到解决方案中的文件夹中。解决方案中已经存在文件夹。 GetExistingSolutionFolder只是在recurseviley中搜索该文件夹。

此消息框的原因可能是什么? 重要的是,不会引发异常。

0 个答案:

没有答案