コーヒー飲みながら仕事したい

仕事で使う技術的なことの備忘録とか


Wordpress に引っ越しました!

Visual Studio 2017 でデフォルトの using を設定する【項目テンプレート使用】

移転しました。

Visual StudioC# でアプリケーションを開発中に個人的によく思うのが、例えば using System.Linq とか using System.Threading.Tasks とか、毎回毎回手で書くの面倒くさいなぁというところです。
using System とかは最初から記述してあるので、それと同じようにデフォルトの using をカスタマイズできないかなぁと思って見つけた解決策の備忘録です。

項目テンプレート

作成方法

結果的には、「項目テンプレート」というのを使用すると解決します。
項目テンプレートの作成方法については、↓こちらが参考になります。

qiita.com

ただし、こちらに書かれている内容は、あくまで項目テンプレートの作成についてであり、デフォルトの using 設定には触れておりません。 そこで、デフォルトの using の設定ですが、「C# Item Template」のプロジェクトで、以下のように設定を行います。

*.vstemplate

そのまま自分が作ったのをコピペしてみます。ここでは、プロジェクト名を MyTemplate で作ったものとします。

<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:sdk="http://schemas.microsoft.com/developer/vstemplate-sdkextension/2010">
  <TemplateData>
    <Name>MyTemplate</Name>
    <Description>MyTemplate</Description>
    <Icon>MyTemplate.ico</Icon>
    <TemplateID>bf7d40b0-1363-4e9f-a155-657b5ca5ed03</TemplateID>
    <ProjectType>CSharp</ProjectType>
    <RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
    <DefaultName>Class.cs</DefaultName>
    <AppliesTo>CSharp</AppliesTo>
  </TemplateData>
  <TemplateContent>
    <!--<References>
      <Reference>
        <Assembly>System</Assembly>
      </Reference>
    </References>-->
    <ProjectItem ReplaceParameters="true">Class.cs</ProjectItem>
  </TemplateContent>
</VSTemplate>

ポイントとしては以下です。

  • <AppliesTo>CSharp</AppliesTo> を追加する
  • <References></References> を削除(コメントアウト)する
    • これしなくても目的は達成できるが、クラスファイルを作るたびに警告が出てくるようになる
Class.cs

これも、そのまま自分が作ったのをコピペしてみます。

using LanguageExt;
using static LanguageExt.Prelude;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

namespace $rootnamespace$
{
    class $safeitemrootname$
    {
    }
}

ポイントとしては以下です。

  • デフォルトで using するものを、単純に列挙するだけ
  • ただし、参照サイトにも注意書きがあるが、 Class.cs のプロパティで、ビルドアクションを「コンパイル」から「コンテンツ」にしないとエラーが出てコンパイルが通らない
    • $rootnamespace$ の部分はどうしても赤線が出てエラーっぽく表示されるが、コンパイルには問題なし

コンパイル

項目テンプレートをそのままコンパイルすると、 zip ファイルが出力されます。
(参考サイトでは VISX で拡張として Visual Studio にインストールする方法が記載されていましたが、私の環境ではどうも拡張のインストールに時間がかかるので、 zip のまま使うようにしています。)

zip ファイルは、私の開発環境では プロジェクトフォルダ\bin\Debug | Release\ItemTemplates\CSharp\1033 に出力されました。

配置

生成された zip を、 Visual Studio のテンプレート置き場である C:\Users\XXXXX\Documents\Visual Studio 2017\Templates\ItemTemplates に zip のままコピーします。
その後、 Visual Studio を起動すると、「追加」から作成したテンプレートを選択できるようになっています。

もし変更したくなったら、変更後の zip をコピーしなおすと、次回起動時から変更が反映されるみたいです。