Автоматизация экземпляра Visual Studio из отдельного процесса

2

Есть ли способ написать приложение, которое может подключаться к исполняемому экземпляру Visual Studio и выдавать ему команды? Например, можно ли написать WPF-приложение с кнопкой, которая при нажатии вызывает команду "Build.BuildSolution" для уже открытого экземпляра Visual Studio, заставляя его начать сборку?

Я уверен, что я мог бы использовать SendKeys для отправки Ctrl + Shift + B, но я хочу знать, есть ли способ написать фактический API для автоматизации Visual Studio и вызвать команды по имени.

  • 1
    Почему бы просто не сделать надстройку Visual Studio? Если даже слушать эти команды на именованном канале.
  • 0
    Я, вероятно, мог бы создать надстройку VS, если бы это был единственный способ сделать это, но я бы чувствовал себя глупо, испытывая такую большую боль и перезапуская VS много раз, если уже есть способ автоматизировать VS извне.
Теги:
visual-studio
automation

2 ответа

4
Лучший ответ

Здесь программа С#, которая подключается к работающей Visual Studio и выдает команду сборки. Часть DTE.9 означает "Visual Studio 2008" - используйте DTE.8 для VS 2005 или DTE.10 для VS 2010.

using System;
using System.Runtime.InteropServices;
using EnvDTE80;

namespace SORemoteBuild
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Get an instance of the currently running Visual Studio IDE.
            EnvDTE80.DTE2 dte2;
            dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
                                      GetActiveObject("VisualStudio.DTE.9.0");
            dte2.Solution.SolutionBuild.Build(true);
        }
    }

    public class MessageFilter : IOleMessageFilter
    {
        // ... Continues at http://msdn.microsoft.com/en-us/library/ms228772.aspx

(Глупость с STAThread и MessageFilter "из-за проблем с конфликтами потоков между внешними многопоточными приложениями и Visual Studio", что бы это ни значило. Вставка кода из http://msdn.microsoft.com/en-us/library/ms228772.aspx заставляет работать.)

0

Если вы просто пытаетесь автоматизировать сборку/упаковку своих приложений, вы должны изучить MSBuild - это механизм сборки Microsoft, который позволяет вам script автоматизировать большинство функций Visual Studio.

  • 0
    Да, но (а) я хочу, чтобы Visual Studio знала, что он был перестроен, чтобы последующий запуск был запущен немедленно, и (б) сборка была только примером - это не единственная команда, которую я хочу выполнить. Я также в конечном итоге хочу запросить вещи из VS, такие как редактор сохранить статус и так далее. Но простой вопрос, такой как «выдача команд по имени», казался лучшим началом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню