C# EnvDTE SolutionFolder AddFromFile显示错误消息

C# EnvDTE SolutionFolder AddFromFile显示错误消息,c#,envdte,C#,Envdte,我想使用DTE将一些项目添加到解决方案中。这是WPF应用程序,不是扩展 我必须将一些项目添加到一个文件夹,然后将另一个项目添加到另一个文件夹,最后一个项目添加到另一个文件夹 将项目添加到第一个文件夹时,一切正常。但当我将项目添加到另一个文件夹时,消息框弹出:“操作无法完成:无效的窗口句柄。” 单击OK后,我得到另一个消息框:“操作无法完成:未指定的错误” 但是,所有项目都已成功添加到解决方案中。因此,最大的问题是在执行任务时弹出的消息框。读过“无效窗口句柄”之后,我想也许我应该尝试在主线程上完成

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

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

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

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

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

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

ActiveSolution是我的私人领域

//Adding project to solution:
DoAction(() =>
{
    SolutionFolder folder = GetExistingSolutionFolder(folderTree);
    if (folder == null)
        activeSolution.AddFromFile(projectFileName);
    else
        folder.AddFromFile(projectFileName); //<-- messagebox popups here
});           
//将项目添加到解决方案:
DoAction(()=>
{
SolutionFolder folder=GetExistingSolutionFolder(folderTree);
如果(文件夹==null)
activeSolution.AddFromFile(项目文件名);
其他的

folder.AddFromFile(项目文件名);//这是一个臭名昭著的异常,当计算机的桌面堆空间不足或进程试图创建超过10000个窗口时会引发。请查看任务管理器的“进程”选项卡。添加“用户对象”列。此devenv实例使用约146个用户对象,然后显示消息框。My devenc instance->actual VisualStudio使用了大约315。当我在第一个文件夹的末尾退出dteService,然后再次打开它时,它会显示一个消息框。您尝试执行的操作非常模糊,失败的可能性很大,需要Microsoft支持才能帮您解决。但他们几乎肯定会告诉您,您需要创建一个VSIX加载项。我很乐意为您效劳ally首先禁用VS2017“轻量级解决方案加载”选项。接下来,我将再次启动VS,并将调试器连接到第一个实例,以尝试捕获异常的堆栈跟踪。但我们甚至不知道您使用的VS版本,很难帮助您。这是VS2017。正如我所说,没有引发异常,调用堆栈中也没有任何有用的内容。
//Adding project to solution:
DoAction(() =>
{
    SolutionFolder folder = GetExistingSolutionFolder(folderTree);
    if (folder == null)
        activeSolution.AddFromFile(projectFileName);
    else
        folder.AddFromFile(projectFileName); //<-- messagebox popups here
});