【发布时间】:2016-06-09 16:58:30
【问题描述】:
在 Visual Studio VSTO 中,如何指定每次运行项目时要打开的文档进行调试?
默认情况下,它总是打开一个空白文档,当然我想针对文档中已经存在的功能进行测试。
【问题讨论】:
在 Visual Studio VSTO 中,如何指定每次运行项目时要打开的文档进行调试?
默认情况下,它总是打开一个空白文档,当然我想针对文档中已经存在的功能进行测试。
【问题讨论】:
我按照 Cor_Blimey 的建议进行了尝试,但它仅在某些情况发生变化时打开指定的内容(还没有弄清楚是什么)。此外,断点至少在实现上层解决方案的 VS2013 中不起作用。
所以我所做的是每次启动加载项时打开特定的调试/测试文件。
它工作得很好,断点功能正常,没有加载空白工作簿,并且在下一个调试会话中可用的工作表中的更改。
为了避免在发布的加载项中打开文件,我将它放在 #if DEBUG 中。
有关该方法的更多信息是here,但必须谨慎使用,如here 所述。
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 就会一直从调试文件夹打开加载项构建。 您可以通过将办公应用程序作为外部程序运行来避免这种情况,如here 所述。
【讨论】:
您需要使用可以设置为在成功构建时运行的命令行(没有办法只让它在调试时运行(如 F11 中),并且您不能在每个配置的基础上设置它。但是,有一个很好的解决方法可以让它只在调试配置等上做事情。
基本行为是:
打开解决方案。打开项目的属性。转到构建事件。在 Post-Build Event Command Line 中输入 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 Post-Build Event 命令行中的限制。
编辑:
可以在 http://support.microsoft.com/kb/210565 找到 Word 的开关列表
您需要指示 Word 执行的操作取决于您正在制作的插件类型:
如果它是一个标准的 COM 插件,那么只要注册了 DLL 并且您已设置注册表项(或在 Word 插件设置中选择它)打开插件,那么它应该在 Word 打开时打开。
但是,如果它是一个插件文档,那么程序就不同了 -> 尝试使用命令开关来指示 Word 打开特定的插件文档。
我更熟悉 Excel COM 插件,因此您必须尝试 Word 插件的特性。但基本原则是使用构建后事件命令行,加上正确的开关和 Winword 参数。
希望对您有所帮助。
【讨论】: