Visual Studioで新しいクラスを作成するときに、どのようにデフォルトでパブリックに設定しますか?


111

C#Visual Studioプロジェクトのソリューションを右クリックして[追加...]> [クラス...]を選択すると、パブリック修飾子のないクラスが作成されます。Visual Studio(2008)でクラスをデフォルトのパブリッククラスにするにはどうすればよいですか?


1
ここで説明するように、クラステンプレートを変更する必要があります。これは、単一のファイルを編集するよりも少し複雑です(これは予想されることです)が、それほど悪くないように思えます。
ジョンスキート

回答:


71

にあるファイルを変更する必要がありますC:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033

Visual Studio 2010(10.0)以下: Class.zipというzipファイルがあります。これを解凍し、ファイルを編集してpublicキーワードを入力し、再度パックします(必ず元のファイルをバックアップしてください)。

この後、VSがC:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCacheVisual Studioコマンドシェルを開いて次のコマンドを実行し、VSがキャッシュ(のディレクトリに解凍されたzipファイルのみ)を再構築することを確認します。

devenv /installvstemplates

Visual Studio 2012(11.0)以降:@JochemKempeの回答を 参照してください。単一のファイルを編集するだけで、これを変更する方がはるかに簡単です(解凍または再圧縮なし)。

更新:編集を行う前に、管理者権限でお好みのテキストエディターを開くことを忘れないでください。


どうもありがとうございます。VS 2012を搭載した64ビットWindows 7マシンでは、このパスはC:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra

異なるマシンのチーム間でアイテムテンプレートを変更したい場合はどうしますか?
DevDave 2013

VS2013では、VS2013の開発者コマンドプロンプトを管理者として実行し、Visual Studioを閉じた後にコマンドを実行する必要があります。VSが開いている間はコマンドは完了しません。
Chris Moschini、2013

1
@Guyが参照するブログ投稿にアクセスする必要はありません。投稿がそこにある情報を含むように編集されているためです。あなたがいる場合したいというブログの記事を訪問し、それが今、新しいURLに移動しました:guyellisrocks.com/2009/03/...
ErikE

151

VS2012それはに行くのと同じくらい簡単だC:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\ClassとClass.csファイルを編集します。

キャッシュを解凍または再構築する必要はありません。あなたが私に尋ねれば非常に前向きな変化。

VS2015C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2017(RC)C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2017(プロフェッショナル)C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2019(エンタープライズ)C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

VS2019(プロフェッショナル)C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

時代遅れ

VS2019(プレビュー)C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs


2
これは私にはうまくいかないようです。ItemTemplatesCacheディレクトリのClass.csファイルも置き換えました。毎回VS2012を再起動しました。おそらくキャッシュを再構築する方法はありますか?
クラッシュ

7
VS2013の場合、次の場所を使用します:C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan

6
実際のクラステンプレートを更新するには、テキストエディターを管理モードで開く必要がある場合があります。
david.barkhuizen 2014

3
VS2015の場合は、次の場所を使用します:C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Classただし、Xamarinがインストールされている場合は、 「Class.cs」用のWindowsドライブ。すべての結果を一般に公開するだけになりました。
JochemKempe

2
Visual Studio 2019がリリースされたので、バージョンを示すようにプレビューを変更する必要があります。私は唯一のプロフェッショナルがインストールされているが、私は他の2つはコミュニティとEnterprise VS2019 Professionalのだろうと思います:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
デイブ・トンプソン

10

Visual Studio 2012のデフォルトでパブリッククラスを作成するには:

このファイルを編集します。

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

このようにするには:

using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
$endif$using System.Text;
$if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks;
$endif$
namespace $rootnamespace$
{
    public class $safeitemrootname$
    {
    }
}

3

独自のプロジェクトテンプレートを作成するか、既存のテンプレートを変更できます。これらのプロジェクトファイルはすべてテンプレート駆動型であるため、変更したり、独自のファイルを追加したりできます。

これらのリンクをチェックしてください:

マーク


3

これは、C#基本クラスの項目テンプレートを更新する再入可能なPSスクリプトレットです。パスは、使用するVisual Studioのバージョン/エディションによって異なります。また、後で元に戻す場合に備えて、元のテンプレートをバックアップします。

$csharpClassTemplates = @("C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs",
                          "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\1033\Class\Class.cs",
                          "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs")

$csharpClassTemplates | % {
    Write-Output("Updating template $_")
    Copy-Item $_ -Destination "$_.backup"
    (get-content $_).Replace('public ', '').Replace('class ', 'public class ') | Set-Content $_
 }

私のパスは..\2017\Professional\...手動で編集しましたが、2017年の新しいフォルダー構造が表示されました。ありがとうございます。
ste-fu 2017

2

JochemKempeのすばらしい回答に加えて、.NETコアテンプレートに対してそれを行う方法を次に示します。


.NET Core

\CSharp\ディレクトリ内のテンプレートを編集する代わりに、内のテンプレートを編集する必要があります\AspNetCore\

VS2019(エンタープライズ)C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ItemTemplates\AspNetCore\Code\1033\Class\Class.cs

VS2019(プロフェッショナル)C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\AspNetCore\Code\1033\Class\Class.cs


1

JochemKempeからの回答は問題なく機能しますが、保護されたファイルをで書き換える必要があるため、少し難しいですProgram Files

答えを更新するだけです。Communityエディションのテンプレートは次のフォルダーにあります。

c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ProjectTemplates

別の解決策

しかし、新しいテンプレートを作成する別の可能性があります。ソースフォルダーからユーザーテンプレートフォルダーにファイルをコピーします。

たとえば、Windowsフォームアプリケーションの場合、次のソースフォルダーのいずれかになります(Visual Studio 2017コミュニティの場合)

c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ProjectTemplates\CSharp\Windows Root\Windows\1033\WindowsApplication\
c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplates\CSharp\Windows Root\Windows\1033\WindowsApplication\
c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplatesCache\CSharp\Windows Root\Windows\1033\WindowsApplication\

デフォルトのユーザーテンプレートフォルダーは(Visual Studio 2017 Communityの場合)です。

C:\Users\<username>\Documents\Visual Studio 2017\Templates\ProjectTemplates\

また、新しいWindowsフォームアプリケーションテンプレートの宛先フォルダーは次のようになります。

C:\Users\<username>\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\Windows\1033\MyWindowsApplication\

これにより、新しいプロジェクトを作成するときに2つの「Windowsフォームアプリケーション」が作成されます。これら2つの違いは、デフォルトのファイル名のみです。より明確に区別するために、テンプレートの表示名を変更することができます。テンプレート名を変更するには、.vstemplateファイルを更新します。

オリジナルにcsWindowsApplication.vstemplateは次の行が含まれます:

    <Name Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2318" />

名前を変更するには、行を次のように変更する必要があります。

    <Name ID="2318">My Windows Form Application</Name>

このソリューションの欠点は、新しいテンプレートの名前を変更し、新しいテンプレートを既存のテンプレートに追加する必要があることです(古い「間違った」例はそのまま残り、それでも不本意にそれを使用できます)

しかし、良い部分もあります。サンプルを追加または更新するために管理者である必要はありません。Program Filesフォルダ内のファイルを書き換える必要はありません。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.