私はいくつかの異なることに取り組んでおり、一部はタブを使用し、一部はインデントに2つのスペースを使用し、別のユーザーはインデントに4つのスペースを使用しています.
Visual Studio でこれを設定するオプションは、[ツール] -> [オプション] -> [テキスト エディター] -> [<言語>] -> [タブ] にあります。
ソリューションごとにこれらの設定をオーバーライドする方法はありますか?
私はいくつかの異なることに取り組んでおり、一部はタブを使用し、一部はインデントに2つのスペースを使用し、別のユーザーはインデントに4つのスペースを使用しています.
Visual Studio でこれを設定するオプションは、[ツール] -> [オプション] -> [テキスト エディター] -> [<言語>] -> [タブ] にあります。
ソリューションごとにこれらの設定をオーバーライドする方法はありますか?
更新: VS 2017 は EditorConfig をネイティブにサポートしています: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/
VS 2010 以降では、ソリューション/プロジェクト ルートの.editorconfigファイルに基づいてインデントを設定する拡張機能があります。
http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328
Visual Studio Code にも同様の拡張機能があります。
探しているものを達成するための(確かにハックな)方法の1つを次に示します。
1) インデントを変更するマクロを作成する ( source )
Sub Set-Indent(indent As integer)
Dim props As EnvDTE.Properties = DTE.Properties("TextEditor", "C/C++")
Dim ts As EnvDTE.Property = props.Item("TabSize")
Dim ins As EnvDTE.Property = props.Item("IndentSize")
ts.Value = indent
ins.Value = indent
End Sub
2) ソリューションの読み込みに接続します。マクロ エクスプローラーで を
EnvironmentEvents
選択SolutionEvents
し、最初のドロップダウンで選択しOpened
、2 番目のドロップダウンで選択します。これで、ソリューションを開くたびにトリガーされるマクロが作成されました。ソリューションを必要なインデントにマップするだけです。
VS 拡張機能 EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ) Web サイトから:
EditorConfig プロジェクトは、インデント サイズなどの一般的なテキスト エディター オプションを構成するための単純なファイル形式を定義します。これらの構成ファイルは、プロジェクトのソース コードと一緒に配置するように設計されているため、テキスト エディターはファイルごとに適切なオプションを使用できます。EditorConfig プロジェクトは、多くの一般的なテキスト エディター用のプラグインを提供し、フォーマットを完全にクロスプラットフォームにします。
(私のものを強調)
完全な開示: 個人的にテストすることはできませんでした (ReSharper が引き継ぐため)。
VS2017 RC では、.editorconfig 形式のサポートが追加されました。
更新:インデントは Resharper によって管理されていないように思われるため、この回答は実際には特定の質問に対処していません。ただし、一般的な用語には当てはまります。つまり、誰かがここでそれを探してつまずいた場合に備えて、「ソリューション設定ごとの Visual Studio」です。
Resharperを使用している場合は、ソリューションの書式設定 (実際にはすべての設定) を保存できます。さらに、自分専用 (つまり、ソース管理にコミットしない) か、共有ソリューション固有の設定 (つまり、ソース管理にコミットする) かを指定できます。
Resharper > Options > Code Editing > C# (or whatever language) > Formatting Style > Braces Layout
次に、ウィンドウの下部にある [ Save To
Solution XYZ personal] (または目的に応じて共有) を選択します。
YOURSOLUTION.sln.DotSettings.user
これにより、次のような値を持つ xml ファイルが作成されます。
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>
タブ/スペースの挿入設定を次のように設定できますprops.Item("InsertTabs") = bool
これをチェックしてください:https://github.com/jamesfoster/VS-Whitespace-Macros
したがって、受け入れられた解決策には、「解決策を必要なインデントにマップするだけでよい」と書かれていますが、それを行う方法を除いて、これは素晴らしいことです。それを理解しようとして多くの時間を無駄にした後、私はここで私が好む方法を見つけました。このメソッドは、ソリューションごとに異なる可能性がある、エクスポートされた設定をいくつでもロードします。設定には、インデントから色、さらにはウィンドウのレイアウトまで、何でも含めることができます (私はそう思います)。
SolutionEvents.Opened イベントを処理するコードが自動的に追加されます。そのコードを次のように変更します。
Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
Dim item As ProjectItem = DTE.Solution.FindProjectItem("solution.vssettings")
If Not item Is Nothing Then
'MsgBox("Uncomment this to see a message when settings are loaded")
Dim name = item.FileNames(1)
DTE.ExecuteCommand("Tools.ImportandExportSettings", "/import:""" & name & """")
End If
End Sub
マクロを保存します。
マクロが実行されない場合は、MS セキュリティ パッチが原因である可能性があります。これに基づいて、次の文字列を追加します。
<AllowDComReflection enabled="true"/>
次の 3 つのファイルの <runtime> タグの下:
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr.exe.config"
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv.exe.config"
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config"
これらのファイルの編集に使用するエディタを管理者権限で起動してください (つまり、メモ帳を右クリックして [管理者として実行] を選択します)。
上記のマクロと同じことを行うはずのプラグインも見つけましたが、インストーラーを実行した後、何らかの理由で何もしませんでした。