我正在尝试编写一个 visual studio 扩展,允许我在一个解决方案中发布多个 Web 应用程序,类似于在所有项目上使用一键发布功能。
DTE2 service = (DTE2)this.GetService(typeof(DTE));
Projects projects = service.Solution.Projects;
SolutionBuild2 build = (SolutionBuild2)service.Solution.SolutionBuild;
foreach (Project project in projects)
{
build.PublishProject("Release", project.UniqueName, true);
}
当我尝试运行这段代码时,输出窗口中的唯一结果是:
Error: Object reference not set to an instance of an object.
========== Publish: 0 succeeded, 0 failed, 0 skipped ==========
... 这并没有告诉我太多。有没有办法找出问题所在?
我还看到了一个界面 IVsPublishableProjectCfg ,但似乎没有任何示例说明如何使用它。
是否有另一种方法可以以编程方式将 Web 应用程序发布到特定目录,类似于一键发布功能的工作原理?
最佳答案
执行此操作的另一种方法是模拟单击解决方案资源管理器中右键单击“发布”上下文菜单项,如以下类似问题所示: DTE.ExecuteCommand and wait
请注意,由于这是一个异步命令,您将需要构建逻辑以利用发布后事件来迭代您的项目集合(有关这方面的一些详细信息显示在其中一个答案中)。
https://stackoverflow.com/questions/7053999/