Когда вы создаете проект рабочей книги VSTO в Visual Studio, VS создает новый файл Excel (xlsx) и позволяет редактировать его непосредственно из Visual Studio. Книга Excel отображается на новой вкладке вместе с любым кодом или формами:
![Example of editing an excel workbook from within Visual Studio](https://i.stack.imgur.com/lweaF.gif)
Для поддержки этого Visual Studio необходимо запустить экземпляр EXCEL.EXE
в время разработки .
Проблема в том, что, к сожалению, вместо того, чтобы всегда запускать свой собственный экземпляр, если он находит тот, который уже запущен, он будет использовать его. Так что если по какой-то причине у меня уже был открыт Excel на моем компьютере, Visual Studio будет использовать этот экземпляр повторно.
Это вызывает несколько проблем: если Excel выполнял длительные вычисления, он зависнет Visual Studio; если в VS я открываю модальное окно Excel (например, свойства ячейки или шрифта), оно замораживает мое существующее окно Excel (которое находится вне VS). Если VS дает сбой, Excel.exe по-прежнему имеет дескриптор файла Excel проекта, но я не могу убить его из-за других моих открытых файлов в Excel. И, наконец, если мне удалось открыть Excel 2003 на ПК, а мой проект использует Excel 2007, VS все еще попытается использовать экземпляр 2003, запущенный в данный момент, что затем будет сбит с толку, когда его попросят откройте файл 2007, попробуйте преобразовать его и т. д., что приведет к полному беспорядку.
Единственное решение, которое я нашел, - это закрыть ВСЕ EXCEL.EXE
экземпляры, только после запуска VS, открыть проект VSTO, VS не найдет запущенных экземпляров Excel и запустить его самостоятельно, а затем я могу снова открыть свой ранее открытые файлы в новых экземплярах, которые я открываю сам. Хотя это не всегда возможно и может быть настоящей болью, поэтому я хотел бы найти способ заставить VS открывать каждый раз свой собственный, личный новый экземпляр.