1

我有一个基于 VSX 包 (2008+) 中的 C# 类库项目类型的自定义项目类型。对于这种项目类型,即使输出是一个类库,我也希望能够通过按 F5 (等)来调试这个应用程序。我有一个预构建的可执行文件,它将程序集路径作为命令行参数并将其加载以进行工作台测试。

我可以通过在属性页中使用项目的“调试 >> 启动操作 >> 启动外部程序”手动模拟此行为,方法是提供可执行文件的路径并将输出 dll 的相对路径作为命令行参数提供。但是这个设置太多了。我希望项目类型的包代码能够自动获取活动配置的程序集和工作台可执行文件的安装位置。

最坏的情况是,在每次成功构建后,该项目的属性页都会以编程方式更新为正确的值。我不是特别喜欢这个解决方案,因为它看起来很乱,似乎很容易失去同步并将这些潜在的错误暴露给用户。

我能想象的最好的解决方案涉及拦截 Start Debugger 事件(仅适用于此项目类型),然后它以“无法直接启动具有类库输出类型的项目”并改为执行工作台(附加调试器,课程)。我不知道 VSX 是否公开了必要的部分。

我愿意花钱让有经验的人编写这个简单的 (?) 包(以及一些其他要求,主要是项目级菜单项,已经部分实现),但我没有找到任何专门研究 VSX 包的顾问. 欢迎提出建议。

我采取了错误的方法吗?我假设我需要一个包而不是加载项。

4

1 回答 1

3

根据您的描述,听起来您没有自定义项目类型,而是自定义项目模板。(如果您有自己的自定义编程语言,通常只有您自己的项目类型)。

假设是这种情况,我认为您应该能够创建自己的 IWizard 实现,该实现将设置项目以启动您的主机可执行文件等......在项目创建时(即在用户通过新项目对话框之后) .

例如,您可以在 IWizard 的ProjectFinishedGenerating实现中执行以下操作:

public void ProjectFinishedGenerating(Project project)
{
  foreach (Configuration config in project.ConfigurationManager)
  {
    config.Properties.Item("StartAction").Value = 1; //Launch external program
    config.Properties.Item("StartProgram").Value = <pathToYourEXE>;
    config.Properties.Item("StartArguments").Value = <argumentsToYourExe>;
  }
}
于 2009-11-11T00:24:07.037 回答