私はいくつかの異なることに取り組んでおり、タブを使用するもの、インデントに2つのスペースを使用するもの、インデントに4つのスペースを使用するユーザーなどがあります。
Visual Studioでこれを設定するオプションは、[ツール]-> [オプション]-> [テキストエディター]-> [<言語>]-> [タブ]にあります。
ソリューションベースでこれらの設定を上書きする方法はありますか?
私はいくつかの異なることに取り組んでおり、タブを使用するもの、インデントに2つのスペースを使用するもの、インデントに4つのスペースを使用するユーザーなどがあります。
Visual Studioでこれを設定するオプションは、[ツール]-> [オプション]-> [テキストエディター]-> [<言語>]-> [タブ]にあります。
ソリューションベースでこれらの設定を上書きする方法はありますか?
回答:
ここにあなたが探しているものを達成する(確かにハッキーな)方法があります:
1)インデントを変更するマクロを作成します(ソース)
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 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にも同様の拡張機能があります。
.sln
ファイルと同時に)にファイルを配置すると、各プロジェクトフォルダーのみに機能しません。また、それはサポートしていindent_brace_style
ますか?
indent_brace_style
、まだ私がしました- 問題を開いたそれのために。
「Rebracer」と呼ばれる別のアドインもあります...リンクはこちらです:http ://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58
VS拡張EditorConfig(http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328)Webサイトから:
EditorConfigプロジェクトは、インデントサイズなどの一般的なテキストエディターオプションを構成するための単純なファイル形式を定義します。これらの構成ファイルは、プロジェクトのソースコードと一緒に配置されるように設計されているため、テキストエディターはファイルごとに適切なオプションを使用できます。EditorConfigプロジェクトは、多くの一般的なテキストエディター用のプラグインを提供し、フォーマットを完全にクロスプラットフォームにします。
(強調鉱山)
完全な開示:(ReSharperが引き継ぐため)私は個人的にテストすることができませんでした。
タブ/スペースの挿入の設定は、 props.Item("InsertTabs") = bool
これをチェックしてください:https://github.com/jamesfoster/VS-Whitespace-Macros
更新:インデントは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>
CTRL+Q
)を使用して「タブ」と入力すると、使用可能なすべての言語設定に直接ジャンプできることです。
だから、受け入れられた解決策は「あなたがあなたの解決策を必要なインデントにマッピングする必要があるだけです」と言います、それはあなたがそれをどのように行うかを除いて素晴らしいです?それを理解しようと多くの時間を費やした後、私はここで私が好む方法を見つけました。このメソッドは、ソリューションごとに異なる可能性があるエクスポートされた設定をいくつでもロードします。設定には、インデントから色、ウィンドウレイアウトまで、あらゆるものを含めることができます(私はそう思います)。
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"
これらのファイルの編集に使用するエディタを管理者権限で起動してください(つまり、メモ帳を右クリックして[管理者として実行]を選択します)。
上記のマクロと同じことをするはずのプラグインも見つけましたが、インストーラを実行した後、何らかの理由で何も実行されませんでした。
clang-formatは、ソースコードをフォーマットするための非常に洗練されたオプションを提供します。
Visual Studioプラグインは非常に初歩的なものです。つまり、自動的には実行されませんが、(手動で呼び出すと)うまく機能します。