【发布时间】:2011-04-06 14:33:59
【问题描述】:
当您在 Visual Studio 中创建 VSTO 工作簿项目时,VS 会创建一个新的 Excel (xlsx) 文件并允许您直接在 Visual Studio 中进行编辑。 Excel 工作簿与任何代码或表单一起出现在新选项卡中:
为了支持这一点,Visual Studio 需要在设计时运行EXCEL.EXE 的实例。
问题是不幸的是,如果它发现一个已经在运行的实例,而不是总是运行它自己的实例,它将使用那个实例。因此,如果出于某种原因我的 PC 上已经打开了 Excel,Visual Studio 将重用该实例。
这会导致几个问题:如果 Excel 运行长时间计算,它将冻结 Visual Studio;如果在 VS 中打开一个模态 Excel 窗口(例如单元格或字体属性),它会冻结我现有的 Excel 窗口(VS 外部的那个)。如果 VS 崩溃,Excel.exe 仍然有项目的 excel 文件的句柄,但我无法杀死它,因为我在 Excel 中打开了其他文件。最后,如果我碰巧在 PC 上打开了 Excel 2003,并且我的项目正在使用 Excel 2007,VS 将仍然尝试使用当前正在运行的 2003 实例,然后在被询问时会感到困惑打开2007文件,尝试转换等,结果一团糟。
我找到的唯一解决方案是关闭所有EXCEL.EXE实例,只有在运行VS后,打开VSTO项目,VS会发现没有运行的excel实例并运行它自己的,然后我可以重新打开我的以前在我自己打开的新实例中打开的文件。虽然这并不总是可能的,而且可能真的很痛苦,所以我想找到一种方法让 VS 每次都打开它自己的个人新实例。
【问题讨论】: