[〜#〜] 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");
}
}
マクロを失うことに対処する他のソリューションのアイデアを探しています。
マクロの最も簡単な代替方法は、add-insを作成することです。わくわくしませんでしたが、実は驚くほど簡単です。それには3つの簡単な部分があります。
Addins
ディレクトリにコピーします。ソリューションを閉じた後にスタートページを表示するために作成した簡単なマクロ を使用して、アドインに変換しましょう。
これで、アドインプロジェクトができました。これを使用して、次のことを行います。
_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の過去のバージョン。
Visual Commander 拡張機能(私が開発)は、Visual Studio 2012/2013/2015のマクロに代わるものです。新しいVBコマンドで既存のVisual Studioマクロコードを再利用することもできます。
テキストを Notepad ++ に切り取り、そこでマクロを使用して貼り付けます。 Visual Studio 2012にはもう機能がないのは残念です...
マクロもうまくいくのを見てとても悲しかったです。 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からの便利なリンクをいくつか紹介します。
次のような正規表現で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\); \\}\\}
Visual Studio 2012にはマクロがないため、1回のキー操作で文字通り標準の小さなテキストを挿入するために常に文字列を使用しているため、マクロが不足しています。そこで、非常に単純なスクリプト拡張パッケージ VSScripts を作成しました。これにより、コマンドラインプログラムから現在の選択を操作できます。
これは、古いマクロシステムを完全に完全に置き換えるものではなく、キーボードマクロは提供しませんが、多くの種類のテキスト操作マクロを再作成できます。
マクロ機能を維持するために私がしたことは...
新しいプロジェクト-> 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
完了をクリックします
.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();
...
メニューに移動ツール->オプション...->環境キーボードとキーストロークをツールにマッピングする
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がこれを削除することを決定するまで)。
個人的に私はこれが好きです- Visual Commander 拡張機能を使用すると、Visual Studioで反復タスクを自動化できます。