====== Visual Studio ======
===== Tips =====
エラー箇所へ飛ぶ Ctrl + Shift + F12\\
[[https://qiita.com/kengop/items/ac9b57404d30e0cfdd20|VisualStudio 便利なショートカット]]\\
スクロールバーにコードマップを表示する
- 「ツール>オプション」を選択する
- 「テキストエディター>すべての言語>スクロールバー」を選択する
- 「垂直スクロールバーでのマップモードの使用」をオンにする
- 「OK」を選択する
==== タブとスペースの表示 ====
Visual Studio メニューの「編集>詳細>スペースの表示」を選択する。\\
[[http://baba-s.hatenablog.com/entry/2017/12/05/175527|【Visual Studio】空白(スペース)やタブを表示する方法]]
==== タブをスペースに変換する ====
* タブの部分を選択し、編集→詳細→選択行のタブの設定を解除 を選択する。
* 空白からタブに変換した場合は、編集→詳細→選択行にタブを設定 を選択する。
==== 管理者権限で常に開くようにする ====
=== Windows 7 ===
- ショートカットの「互換性」タブをクリックします。
- 特権レベルの「管理者としてこのプログラムを実行する」にチェックを付ける。
- グレーアウトされている場合、Windows 10と同様にする。
[[https://ymyk.wordpress.com/2010/05/12/%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%B8%B8%E3%81%AB%E7%AE%A1%E7%90%86%E8%80%85%E6%A8%A9%E9%99%90%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/|バッチファイルを常に管理者権限で実行する方法]]
=== Windows 10 ===
- ショートカットのプロパティのショートカットタブより『詳細設定』をクリックします。
- 詳細プロパティより『管理者として実行』にチェックを付け『OK』をクリックします。
[[https://shnk38.com/pc/how-to-win/win10-software-run-as-admin/|[Win10] ソフトウェアを常に『管理者として実行』する方法]]
==== 拡張機能 ====
Indent Guides インデント位置に破線\\
[[http://baba-s.hatenablog.com/entry/2016/04/29/100000|【Visual Studio】インデント位置に破線を表示する拡張機能「Indent Guides」]]
C# outline 折りたたみ\\
[[http://baba-s.hatenablog.com/entry/2016/05/10/100000|【Visual Studio】if文やfor文でもアウトラインを有効にする拡張機能「C# outline 2015」]]
Trailing Whitespace Visualizer コード内の不要な空白を強調表示\\
[[http://baba-s.hatenablog.com/entry/2016/04/26/100000|【Visual Studio】コード内の不要な空白を強調表示する拡張機能「Trailing Whitespace Visualizer」]]
Web 開発のための Visual Studio 拡張機能をまとめたもの 2015版と2017版がある\\
[[http://miso-soup3.hateblo.jp/entry/2016/01/08/172329|Visual Studio 拡張機能、Web Extension Pack リスト]]\\
[[http://miso-soup3.hateblo.jp/entry/2017/03/18/153445|Web Extension Pack 2017 から Web Essentials 2017 へ]]
中括弧の位置や空行削除や不要なusingなど\\
[[https://moriblog.kit-eng.com/?p=1199|Code整形でちょっと役立つCodeMaidの利用方法]]
==== TODOコメント ====
コーディングしている際に、後で処理を追加しておくメモ用にTO-DOを作成する。
=== 書き方 ===
ポイントは、「%%//%%」と「TODO」の間に半角スペースを入れることです。
// TODO: taskA
=== タスク一覧表示 ===
Visual Studioの「表示」>「タスク一覧」から確認できます。
=== 参照 ===
[[https://www.region-it-music.com/2021/06/27/%E3%80%90visual-studio%E3%80%91todo%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9%E3%81%A8%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95/|【Visual Studio】TODOコメントの書き方と確認方法]]
==== 画面解像度 ====
フォームの文字サイズなどが大きく表示されてしまう場合、高DPIが原因
レイアウトが正常な状態\\
{{:it技術:form文字サイズ正常.png|}}\\
レイアウトが崩れた状態\\
{{:it技術:form文字サイズ異常.png|}}
Visual Studio 2015のショートカットの互換性タブに設定にある「高DPI設定では画面のスケーリングを無効にする」にチェックを付ける。
{{:it技術:高dpi無効.png|}}
==== Visual Studioで外部ソースを含めたデバッグを実行したい ====
メニューの「ツール > オプション」を開いて、「デバッグ」項目の「マイコードのみを有効にする」のチェックを外します。
{{:it技術:visualstudio2022_01.png?400|}}
[[https://blog.yucchiy.com/2022/01/debugging-external-sources-with-vs/|Visual Studioで外部ソースを含めたデバッグを実行する]]
==== Visual Studioの保存ボタンで「オブジェクト参照がオブジェクトインスタンスに設定されていません」のエラー ====
=== 現象 ===
Visual Studio 2022でプロジェクトを開いてソースコードを編集して保存しようとすると「オブジェクト参照がオブジェクトインスタンスに設定されていません」のエラーになり保存ができない。保存させるには編集したファイルのタブを閉じることで保存させている。
=== 対応 ===
[[https://stackoverflow.com/questions/34084003/visual-studio-error-object-reference-not-set-to-an-instance-of-an-object-after|Visual Studio error "Object reference not set to an instance of an object" after install of ASP.NET and Web Tools 2015 - stackoverflow]]
- Visual Studio 2022を閉じる
- C:\Users{ユーザー名}\AppData\Local\Microsoft\VisualStudio\ フォルダを開きます
- 17.0_9cac6ada フォルダの名前を変更する
- Visual Studio 2022を起動します。
==== ビルド後に不要なフォルダを削除 ====
Microsoft.Data.SqlClient に切り替えてから、言語コードのフォルダー出力されるようになった。\\
これらのリソースファイルのほとんどが例外メッセージをローカライズするために使用されていることですが、使用中のプロジェクトとしては不要なため、削除したい。
https://github.com/dotnet/SqlClient/issues/1368
上記サイトのようにプロジェクトの.csprojファイルにAfterBuildの方法にしたかったが、Visual Studio 2022上から追加して実行しても何も削除されなかった(調査が必要)
AfterBuildの方法は中止、プロジェクトのプロパティにある「ビルド後のイベント」を使用することにした。\\
「ビルド後のイベント」のところに「call RemoveDir.bat $(OutDir)」をセット
{{:it技術:不要フォルダ削除.png|}}
対象ファイルが存在する言語フォルダのみを削除する「RemoveDir.bat」を、プロジェクトの.csprojファイルと同じフォルダに格納する。
@echo off
setlocal enabledelayedexpansion
set TRUE_FALSE=FALSE
for /d %%f in ("%1%\*") do (
if exist "%%f\Microsoft.Data.SqlClient.resources.dll" set TRUE_FALSE=TRUE
if exist "%%f\Microsoft.TestPlatform.CoreUtilities.resources.dll" set TRUE_FALSE=TRUE
if !TRUE_FALSE!==TRUE (
echo Deleting folder: %%f
rmdir /s /q "%%f"
)
)
endlocal
※発行(publish)した場合、結局言語フォルダが出来てしまう。
テストプロジェクトの場合「Microsoft.Data.SqlClient.dll」を指定しても、csとplとtrフォルダはファイル未存在で残ってしまったため、「Microsoft.TestPlatform.CoreUtilities.resources.dll」に切り替えた。
* [[https://learn.microsoft.com/ja-jp/visualstudio/ide/how-to-specify-build-events-csharp?view=vs-2022|ビルド イベントを指定する (C#)]]]
* [[https://learn.microsoft.com/ja-jp/visualstudio/ide/reference/pre-build-event-post-build-event-command-line-dialog-box?view=vs-2019&viewFallbackFrom=vs-2022|ビルドイベント用のマクロ]]