0

我编写了一个插件来修改(C++,最有可能,但可能是包含 C++ 的点网)解决方案。

加载项似乎运行成功。

有时,在保存后,甚至在成功构建使用插件修改的解决方案后,VisualStudio 崩溃。如果我不保存它也会崩溃,如果我尝试关闭而不保存它会崩溃。只是……不是每次。

该代码在确定它不需要解决方案中的某些项目后,会尝试删除它们, http: //msdn.microsoft.com/en-us/library/envdte._solution.remove(v=vs.100) .aspx - 在 try-catch 中 - 并且删除成功。

就像我说的,我可以保存,然后,解决方案保存并正确构建......

唯一的问题是,当我尝试关闭解决方案或 Visual Studio 时,它崩溃了——严重。它也可能在插件完成后崩溃,稍后……未确定。

为了排除故障,我最终添加了

try
{
  solution.Close(false);
}
catch (System.Exception e)
{
  MessageBox.Show(e.Message);
}

我得到一个错误:

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

我不想通过代码关闭解决方案,我只是不想让 Visual Studio 崩溃。

现在,我已经用solution.Remove(projectToRemove)MessageBox 替换了 - 我的代码很开心 - 并且无法执行它的工作。

谢谢你的任何建议。

4

1 回答 1

0

答案 - 虽然不令人满意:我的代码受源代码控制 - 我有 VisualHg - 并且在代码完成后 - 从 AddIn 返回后 - VisualHg 是引发异常的那个。

据我所知 - 并通过放弃解决了问题 - 我的 AddIn 最终会告诉用户他应该删除哪些项目 - 但不会自己删除它们。

或许有一天……

于 2013-03-28T16:30:47.060 回答