web-dev-qa-db-ja.com

Visual Studio 2012のマクロの代替

[〜#〜] xaml [〜#〜] 開発では、ViewModelプロパティにマクロを広範囲に使用しています。 [〜#〜] wcf [〜#〜] でさらに使用して、MessageプロパティとDataContractプロパティを生成します。

残念ながら、作成したマクロはVisual Studio 2012で使用できません。

私が話していることの例として、VMの場合、このようなものを入力します。

int id;
string name;

両方の行を選択し、マクロを実行して終了します

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");
   }
}

マクロを失うことに対処する他のソリューションのアイデアを探しています。

51
kfrosty

マクロの最も簡単な代替方法は、add-insを作成することです。わくわくしませんでしたが、実は驚くほど簡単です。それには3つの簡単な部分があります。

  1. ウィザードUIをステップ実行して、マクロプロジェクトを作成します。
  2. コードを書きます。
  3. マクロの.addinおよび.dllファイルをVisual Studio Addinsディレクトリにコピーします。

ソリューションを閉じた後にスタートページを表示するために作成した簡単なマクロ を使用して、アドインに変換しましょう。

マクロプロジェクトを作成する

  • VS 2012を実行して、新しいプロジェクトを作成します。
  • [テンプレート]> [他のプロジェクトの種類]> [拡張性]に移動し、Visual Studioアドインを選択します。
  • ShowStartPageなどの名前を付けます。
  • OKをクリックします。これにより、アドインウィザードが表示されます。
  • 次を選択してウィザードを進めます:
    • プログラミング言語:C#を使用します
    • アプリケーションホスト:VS 2012を選択する必要があります
    • アドインの名前と説明
    • アドインオプションページで、2番目のオプションのみにチェックマークを付けます(「ホストアプリケーションの起動時にアドインをロードしたい」)
    • とりあえずBoxについてはスキップして、[完了]をクリックします。

これで、アドインプロジェクトができました。これを使用して、次のことを行います。

コードを書く

_Connect.cs_ファイルを開きます。 (すでに開いている可能性があります。「DTE」の一部は見覚えがあるはずです。)

クラスレベルでこのコードを追加します。

_SolutionEvents solutionEvents;
_

このコードをOnConnectionメソッドの_addInInstance = (AddIn)addInInst;行の直後に追加します。

_solutionEvents = _applicationObject.Events.SolutionEvents;

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

「実行」ボタンを押して、コードをテストします。アドインがロードされた状態で、Visual Studio 2012の新しいインスタンスが起動します。次に、アドインをテストし、機能することを確認します。 (ソリューションを開いてから閉じます。開始すると、スタートページに戻ります。)

デプロイする

アドインが機能したら、Visual Studio 2012で定期的に使用するには、2つのファイルを展開するだけです。

  • _ShowStartPage.AddIn_(メインプロジェクトディレクトリから)
  • _ShowStartPage.dll_(プロジェクトのビルドディレクトリから。例:bin\Debugまたはbin\Release)

これらの2つのファイルを、おそらく次の場所にあるVS 2012アドインディレクトリに配置します。

_C:\Users\[your user name]\Documents\Visual Studio 2012\Addins_

次に、Visual Studioを終了して再起動すると、アドインが機能していることがわかります。また、[ツール]> [アドインマネージャー]に移動すると、リストに表示されます。

これは、単にマクロエディターを開いてそこにマクロコードを貼り付けるだけではなく、やや面倒なことですが、 Visual Studioの過去のバージョン。

65
Ryan Lundy

Visual Commander 拡張機能(私が開発)は、Visual Studio 2012/2013/2015のマクロに代わるものです。新しいVBコマンドで既存のVisual Studioマクロコードを再利用することもできます。

12
Sergey Vlasov

テキストを Notepad ++ に切り取り、そこでマクロを使用して貼り付けます。 Visual Studio 2012にはもう機能がないのは残念です...

12

Visual Studioには、不足しているマクロ機能を置き換えるアドイン VSScript があります。 Visual Basicではなく、 Lua スクリプト言語を使用しますが、試してみてください。

レコーダー、IntelliSenseを備えたマクロコードエディターウィンドウ、および簡単なデバッガーがあります。アドインはVisual Studioの以前のバージョンもサポートしているため、Visual BasicではなくLua言語を使用する場合は、代わりに元のVisual Studioマクロを使用できます。

5
Dominic.wig

マクロもうまくいくのを見てとても悲しかったです。 Visual Studio 2012の内部で正規表現検索と置換を使用して置換を行うことができます。あなたの場合:

見つける:

(.*) (.*);

と置換する:

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

これにより、マクロが適しているプロパティ名の大文字化以外のすべてが得られます。

ただし、正規表現アプローチの利点の1つは、入力が単純​​ではない場合です(データベーステーブルのDDLステートメントなど)。

MSDNからの便利なリンクをいくつか紹介します。

正規表現の置換

Visual Studioでの正規表現の使用

3
Lee Richardson

次のような正規表現でNotepad ++を使用します。

見つける:

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

交換:

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

Visual Studio 2012にはマクロがないため、1回のキー操作で文字通り標準の小さなテキストを挿入するために常に文字列を使用しているため、マクロが不足しています。そこで、非常に単純なスクリプト拡張パッケージ VSScripts を作成しました。これにより、コマンドラインプログラムから現在の選択を操作できます。

これは、古いマクロシステムを完全に完全に置き換えるものではなく、キーボードマクロは提供しませんが、多くの種類のテキスト操作マクロを再作成できます。

1
Tom Seddon

チェックアウト http://devexpress.com/coderush

テンプレート機能は、あなたが望むものをほとんど実行します。

無料の「エクスプレス」バージョンもあります。

1
Kuffs

マクロ機能を維持するために私がしたことは...

  1. Visual Studio 2012 SDKをダウンロードしてインストールします here (「Visual Studio Package」テンプレートが含まれています)
  2. 新しいプロジェクト-> Installed.Templates.Visual C#.Extensibility.Visual Studio Package

    ウィザードページ1/7

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

    ウィザードページ3/7

    check "menu command"
    

    ウィザードページ7/7

    uncheck both integration and unit test project options
    

    完了をクリックします

  3. .csファイル内:

    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. プロジェクトを実行します。パッケージがロードされた状態で、新しいVisual Studioインスタンスが起動します。
  5. [ツール]メニューの上部にある最初のエントリとしてコマンドを見つけます。クリックして、動作するかどうかを確認します。
  6. 実際にインストールするには、bin\debug(/ release)ディレクトリに移動し、.vsixファイルをダブルクリックします
  7. 次に実行するときにインストールする必要があります
  8. メニューに移動ツール->オプション...->環境キーボードとキーストロークをツールにマッピングする

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

複数のコマンドが必要な場合は、PkgCmdID.csにメニューID、Guids.csにGuid、.vsctにレイアウト、* package.csに関数(およびbutton(MenuCommand)を追加する必要があります。それぞれの関数を初期化します。すべて同じプロジェクトで実行できます。

このプロジェクトを使用して、古いマクロコードでいくつかの新しい「ツール」を作成し、キーをそれらにマップしました。前もってもっと多くの作業(および頭痛)がありますが、マクロにあった遅延時間はありません。

おそらく、ツールメニューを使用せずにこれを行う方法があります。私は昨夜この記事を見始めて、ついに機能するようになったので、今のところはこれで終わりです(少なくともMicrosoftがこれを削除することを決定するまで)。

1
DanW

個人的に私はこれが好きです- Visual Commander 拡張機能を使用すると、Visual Studioで反復タスクを自動化できます。

0
alexanoid