it-swarm.com.de

Alternative zu Makros in Visual Studio 2012

Ich verwende Makros ausgiebig für ViewModel-Eigenschaften in der XAML - Entwicklung. Ich verwende sie noch mehr in WCF , um Message- und DataContract-Eigenschaften zu generieren.

Zu meiner Enttäuschung sind die von mir erstellten Makros in Visual Studio 2012 nicht verwendbar.

Ein Beispiel für das, worüber ich spreche, würde ich für eine VM so etwas eingeben.

int id;
string name;

Wählen Sie beide Zeilen aus, führen Sie ein Makro aus und beenden Sie mit

private int _id;
private string _name;

public int Id
{
   get {return _id;}
   set
   {
      if(_id != value)
      {
        _id = value;
        RaisePropertyChanged("Id");
      }
}

public string Name
{
   if(_name != value)
   {
      _name = value;
      RaisePropertyChanged("Name");
   }
}

Ich bin auf der Suche nach Ideen für andere Lösungen, die sich mit dem Verlust von Makros beschäftigen.

51
kfrosty

Die einfachste Alternative zu Makros ist das Erstellen von add-ins. Ich weiß, ich weiß, ich war auch nicht begeistert, aber es ist überraschend einfach. Es gibt drei einfache Teile:

  1. Erstellen Sie das Makroprojekt, indem Sie eine Assistenten-Benutzeroberfläche aufrufen.
  2. Schreiben Sie Ihren Code.
  3. Kopieren Sie die .addin- und .dll-Dateien des Makros in Ihr Addins-Verzeichnis von Visual Studio.

Nehmen wir ein einfaches Makro, das ich geschrieben habe, um die Startseite nach dem Schließen einer Lösung anzuzeigen und daraus ein Add-In zu machen.

Erstellen Sie das Makroprojekt

  • Führen Sie VS 2012 aus und erstellen Sie ein neues Projekt.
  • Wechseln Sie zu Vorlagen> Andere Projekttypen> Erweiterbarkeit, und wählen Sie Visual Studio Add-In.
  • Vergeben Sie einen Namen, z. B. ShowStartPage.
  • OK klicken. Dadurch wird der Add-In-Assistent aufgerufen.
  • Gehen Sie den Assistenten durch und wählen Sie:
    • Programmiersprache: wir verwenden C #
    • Anwendungshost: VS 2012 sollte ausgewählt werden
    • Name und Beschreibung für Ihr Add-In
    • Aktivieren Sie auf der Seite der Add-In-Optionen nur die zweite Option ("Ich möchte, dass mein Add-In beim Start der Host-Anwendung geladen wird").
    • Überspringen Sie erst einmal die Info-Box und klicken Sie auf Fertig stellen.

Jetzt haben Sie ein Add-In-Projekt. Folgendes tun Sie damit:

Schreiben Sie den Code

Öffnen Sie die Connect.cs-Datei. (Möglicherweise ist es bereits geöffnet. Einige der "DTE" -Dinge sollten bekannt vorkommen.)

Fügen Sie diesen Code auf Klassenebene hinzu:

SolutionEvents solutionEvents;

Fügen Sie der OnConnection-Methode diesen Code direkt nach der _addInInstance = (AddIn)addInInst;-Zeile hinzu:

solutionEvents = _applicationObject.Events.SolutionEvents;

solutionEvents.AfterClosing += () =>
{
    _applicationObject.ExecuteCommand("View.StartPage");
};

Klicken Sie auf die Schaltfläche "Ausführen", um Ihren Code zu testen. Eine neue Instanz von Visual Studio 2012 wird mit dem geladenen Add-In gestartet. Testen Sie nun das Add-In und stellen Sie sicher, dass es funktioniert. (Öffnen Sie eine Lösung und schließen Sie sie. Die Startseite sollte dann wieder angezeigt werden.)

Bereitstellen

Wenn das Add-In ordnungsgemäß funktioniert, müssen Sie nur zwei Dateien bereitstellen, um es regelmäßig mit Visual Studio 2012 verwenden zu können:

  • ShowStartPage.AddIn (aus dem Hauptprojektverzeichnis)
  • ShowStartPage.dll (aus dem Build-Verzeichnis Ihres Projekts; z. B. bin\Debug oder bin\Release)

Fügen Sie diese beiden Dateien in Ihr VS 2012-Add-Ins-Verzeichnis ein, das sich wahrscheinlich hier befindet:

C:\Users\[your user name]\Documents\Visual Studio 2012\Addins

Beenden Sie anschließend Visual Studio, und starten Sie es erneut. Das Add-In sollte funktionieren. Es sollte auch aufgelistet angezeigt werden, wenn Sie zu Extras> Add-In-Manager wechseln.

Dies ist zwar etwas ärgerlicher als das Öffnen des Makro-Editors und das Einfügen des Makrocodes, hat jedoch den Vorteil, dass Sie jede gewünschte Sprache verwenden können, anstatt mit dem etwas flockigen, VB-ähnlichen Editor festgefahren zu sein frühere Versionen von Visual Studio.

64
Ryan Lundy

Die Erweiterung Visual Commander (von mir entwickelt) ist eine Alternative zu Makros in Visual Studio 2012/2013/2015. Sie können sogar Ihren vorhandenen Visual Studio-Makrocode in neuen VB -Befehlen wiederverwenden.

12
Sergey Vlasov

Ich bleibe dabei, den Text in Notepad ++ zu schneiden, dort Makros zu verwenden und dann wieder einzufügen. Schade, dass das Feature in Visual Studio 2012 nicht mehr vorhanden ist ...

12
Joao Milasch

Für Visual Studio gibt es ein Add-In, VSScript , das die fehlende Makrofunktionalität ersetzt. Obwohl es nicht Visual Basic verwendet, sondern die Skriptsprache Lua , möchten Sie es vielleicht ausprobieren.

Es gibt einen Rekorder, ein Makro-Code-Editor-Fenster mit IntelliSense und einen einfachen Debugger. Das Add-In unterstützt auch frühere Versionen von Visual Studio. Wenn Sie die Sprache Lua anstelle von Visual Basic bevorzugen, können Sie es anstelle der ursprünglichen Visual Studio-Makros verwenden.

5
Dominic.wig

Ich war sehr traurig, dass Macros auch gehen musste. Sie können Substitutionen mithilfe der Suche nach regulären Ausdrücken und in Visual Studio 2012 ersetzen. In Ihrem Fall:

Finden: 

(.*) (.*);

Ersetzen mit: 

private $1 _$2;\npublic $1 $2\n{\n  get {return _$2;}\n  set\n  {\n    if(_$2 = value;\n    RaisePropertyChanged("$2");\n  }\n}\n

Damit erhalten Sie alles außer der Großschreibung von Eigenschaftsnamen, für die Macros besser geeignet wäre. 

Ein Vorteil der Methode mit regulären Ausdrücken ist jedoch, wenn die Eingabe nicht so einfach ist (z. B. DDL-Anweisungen für Datenbanktabellen).

Hier einige nützliche Links von MSDN: 

Substitutionen in regulären Ausdrücken

Verwenden von regulären Ausdrücken in Visual Studio

3
Lee Richardson

Ich verwende Notepad ++ mit regulären Ausdrücken wie folgt:

Finden: 

public (.\*) (.)(.*) \\{ get; set; \\}

Ersetzen: 

private \1 \l(\2)\3; \r\n public \1 \2\3 \\{ get \\{ return \l(\2)\3; \\} \r\n set \\{ \l(\2)\3 = value; OnPropertyChanged\(para => this\.\2\3\); \\}\\}
2
TungTh

Das Fehlen von Makros in Visual Studio 2012 brachte mich in Bedrängnis, da ich einige habe, die ich buchstäblich ständig verwende, um kleine Standardtexte mit einem einzigen Tastendruck einzufügen. Also habe ich ein sehr einfaches Erweiterungspaket für Skripte geschrieben, VSScripts , das die Manipulation der aktuellen Auswahl über ein Befehlszeilenprogramm ermöglicht.

Dies erhebt nicht den Anspruch, ein umfassender Ersatz für das alte Makrosystem zu sein, und bietet keine Tastaturmakros, es ermöglicht jedoch die Neuerstellung vieler Arten von Textbearbeitungsmakros.

1
Tom Seddon

Check out http://devexpress.com/coderush

Die Vorlagenfunktion macht so ziemlich was Sie wollen.

Es gibt auch eine kostenlose "Express" -Version.

1
Kuffs

So habe ich meine Makrofunktionalität beibehalten ...

  1. Laden Sie das Visual Studio 2012-SDK herunter und installieren Sie es. hier (enthält die Vorlage "Visual Studio Package")
  2. Neues Projekt -> Installed.Templates.Visual C # .Extensibility.Visual Studio Package

    Assistent Seite 1 von 7

    language = C#
    gen new key is fine, or use another if you have one
    

    assistent Seite 3 von 7

    check "menu command"
    

    Assistent Seite 7 von 7

    uncheck both integration and unit test project options
    

    Klicken Sie auf Fertig stellen

  3. In der CS-Datei:

    using EnvDTE;
    using EnvDTE80;
    
    ...
    private void MenuItemCallback(object sender, EventArgs e)
    {
        MenuCommand cmd = sender as MenuCommand;
    
        // This should start to look like familiar macro code...
        EnvDTE80.DTE2 dte2 = Package.GetGlobalService(typeof(EnvDTE.DTE)) as DTE2;
        TextSelection selection = (TextSelection)dte2.ActiveDocument.Selection;
    
        dte2.UndoContext.Open("macro command replacement");
        selection.Text = "inserted from macro replacement";
        selection.NewLine(1);
        dte2.UndoContext.Close();
        ...
    
  4. Führen Sie das Projekt aus. Eine neue Visual Studio-Instanz wird mit dem geladenen Paket gestartet.
  5. Suchen Sie Ihren Befehl als ersten Eintrag oben im Menü Extras. Klicken Sie darauf, um zu sehen, ob es funktioniert.
  6. Um eine echte Installation durchzuführen, wechseln Sie in das Verzeichnis bin\debug (/ release) und doppelklicken Sie auf die .vsix-Datei
  7. Es sollte für die nächste Ausführung installiert werden
  8. Gehen Sie in das Menü Tools -> Options ... -> environment.keyboard und ordnen Sie Ihrem Werkzeug einen Tastendruck zu

    Mapping theme : Visual C# 2005
    Command       : Tool.yourFunctionName (functions defined in the .vsct file)
    

Wenn Sie mehr als einen Befehl wünschen, müssen Sie Menü-IDs in den PkgCmdID.cs, Guids in Guids.cs, Layouts in .vsct und eine Funktion in der * package.cs (und Schaltfläche (MenuCommand) im Funktion initialisieren) für jeden. Es kann alles im selben Projekt gemacht werden.

Ich habe dieses Projekt verwendet, um mehrere neue "Tools" mit meinem alten Makrocode zu erstellen, und meine Schlüssel darauf zugeordnet. Es ist viel mehr Arbeit (und Kopfschmerzen) von vornherein, hat aber nicht die Verzögerungszeit, die Makros hatten.

Es gibt wahrscheinlich eine Möglichkeit, dies zu tun, ohne die Werkzeugmenüs aufzurufen. Ich habe gestern Abend angefangen, mir das anzuschauen und habe es endlich fertig gebracht, also bin ich damit fertig (zumindest bis Microsoft beschließt, das auch fallen zu lassen).

1
DanW

Ich persönlich mag diese - Visual Commander -Erweiterung, mit der Sie sich wiederholende Aufgaben in Visual Studio automatisieren können 

0
alexanoid