4

在 Visual Studio VSTO 中,如何指定每次运行项目进行调试时要打开的文档?

默认情况下,它总是打开一个空白文档,当然我想针对文档中已经存在的功能进行测试。

4

2 回答 2

2

我按照 Cor_Blimey 的建议进行了尝试,但它只在某些情况发生变化时打开指定的内容(还没有弄清楚是什么)。此外,断点至少在实现上层解决方案的 VS2013 中不起作用。
所以我所做的是每次启动加载项时打开特定的调试/测试文件。
它工作得很好,断点功能正常,没有加载空白工作簿,并且在下一个调试会话中可用的工作表中的更改。为了避免在发布的加载项中打开文件,我将它放在#if DEBUG中。
有关该方法的更多信息在此处,但必须按照此处所述谨慎使用。

         private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
#if (DEBUG)
            this.Application.Workbooks.Open("C:\\Users\\c563368\\Documents\\Visual Studio 2013\\Projects\\...\\debug.xls");
#endif
        }

但是有一个缺点,只要你的调试环境(visual studio)正在运行,Office 就会一直从调试文件夹打开加载项构建。您可以通过将办公应用程序作为外部程序运行来避免这种情况,如此处所述

于 2016-06-08T14:00:52.117 回答
1

您需要使用可以设置为在成功构建上运行的命令行(没有办法只让它在调试上运行(如在 F11 中),并且您不能在每个配置的基础上设置它。但是,有一个很好的解决方法,让它只在调试配置等上做事情。

基本行为是:

打开解决方案。打开项目的属性。转到构建事件。在构建后事件命令行中输入 Word 的路径(例如“C:\Program Files (x86)\Microsoft Office\Office14\Winword”)(或者如果它在您的 %Path% 中,则只需 Winword)并传入您要作为参数打开的文档的路径。这将在每次成功构建时打开 Word 和文档(您可以将触发器设置为所有构建,无论是否成功等)

然而,我更喜欢做的是简单地将它指向一个批处理文件,将有关构建事件的详细信息作为参数传递给批处理文件。然后,在批处理文件中,我运行逻辑来决定是否应该启动 Word、打开文档等。

例如,您可以将其指向

$(ProjectDir)buildScript.bat "$(ConfigurationName)"

然后在批处理文件中有类似的东西

if %1=="Debug - Excel" "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe" "%~dp0\testbook.xlsx"

这将在项目目录中运行一个名为 buildScript 的批处理文件。第一个参数(在批处理文件中访问的 %1)将是配置。因此,您可以将批处理文件设置为启动 Word 并将文档作为参数传递,如果配置为“调试”,但如果配置为“发布”则不传递,从而避开 VS2012 构建后事件命令行中的限制。

编辑:

可以在http://support.microsoft.com/kb/210565找到 Word 的开关列表

您需要指示 Word 执行的操作将取决于您正在制作的插件类型:

如果它是一个标准的 COM 插件,那么只要注册了 DLL 并且您已设置注册表项(或在 Word 插件设置中选择它)以打开插件,那么它应该在 Word 打开时打开。

但是,如果它是一个插件文档,那么程序就不同了 -> 尝试使用 commnd 开关来指示 Word 打开特定的插件文档。

我对 Excel COM 插件比较熟悉,因此您必须尝试使用​​ Word 插件的特性。但基本原则是使用构建后事件命令行,以及 Winword 的正确开关和参数。

希望有帮助。

于 2013-08-04T00:57:54.020 回答