Microsoft Visual Studio

Microsoft Visual Studio Tips

2024.01.10 .VS フォルダ

ソリューションファイル (*.sln) と同じフォルダに .VS フォルダが隠し共有で作成される。Dropbox の同期で問題が発生した際に中身を確認して気付いた。

このフォルダには、Visual Studio の過去のバージョンごとにフォルダが作成されていたり、プロジェクトをコピーした場合には、コピー元のファイルが残っていたりする。

このようなことを繰り返していると、容量がそれなりに増えていく。私の環境ではプロジェクトによって、数十MB になっていることがあった。

やはり、隠し共有を解除して、定期的に中身を掃除したほうがよさそうだ。

2024.01.07 コードスニペット

  • prop + tab 2回:プロパティのひな型コード
  • ctor + tab 2回:コンストラクタのひな型コード
  • fore + tab 2回:foreach のひな型コード
  • sw + tab 2回:switch のひな型コード

2024.01.07 Tips

  • プロパティの set アクセサーまたは get アクセサーのそれぞれ、独立して、アクセスレベル (pubic, private) を変更できる。
  • クラスからインスタンス(オブジェクト)作成する。
  • 一つのクラスから複数のインスタンス(オブジェクト)を作成できる。
  • クラスと構造体の記述方法は、まったく同じ。
  • クラスも構造体もプロパティとメソッドを持つことができる。
  • クラスは参照型、構造体は値型。
  • クラスのインスタンスはヒープ領域に、構造体のインスタンスはスタック領域に作成される。
  • クラスは継承可能、構造体は継承不可能。
  • 引数で渡すとき、参照型か、値型か、を意識する必要あり。
  • 参照型は扱いたいデータの大きさに関係なく一定のサイズ、値型は扱いたいデータの大きさによってサイズが変わってくる。
  • 静的メンバー:静的プロパティ、静的メソッド、静的フィールド
  • 継承:既存のクラスの性質を受け継ぎながら新しいクラスを作る。is a 関係、kinf of 関係。
  • スーパークラス(継承クラス):継承元のクラス
  • サブクラス(派生クラス):継承先のクラス
  • System.Object クラス:クラスの頂点(出発点)、すべてのクラスは System.Object から派生している。
  • null : 無の状態
  • 参照型は初期化しない場合:null
  • 値型に null を格納したい場合は、Nullable 型を使う (int?)
  • シグネチャ:メソッドが持つ特徴のこと(メソッド名、戻り値の型、引数、アクセスレベル)
  • 静的メソッド:引数のみで結果を決定。インスタンスプロパティ、インスタンスフィールドに依存しない。静的クラスでなくても、静的メソッドを定義可能。
  • 静的クラス:インスタンスを生成できない。
  • const は static として扱われる。
  • const はビルドした時点で値が決定される。static readonly は実行時に変更できる。
  • オブジェクト初期化子:C#3.0 で導入
  • コレクション:配列や List<T> など複数のデータを格納するデータ構造
  • フィールド変数:クラスで定義する変数。クラス内のメソッドからアクセスできる。
  • ローカル変数:メソッド内で定義する変数。メソッド内でのみアクセスできる。
  • クラス側で定義するメソッドは、インターフェースで定義する。そうすれば、呼び出し元は、そのインターフェースを実装している型で呼び出すことができる。
    例;クラス側:IDictionary、呼び出し側:Dictionary,SortedDictionary
  • var:暗黙の型指定

2024.01.06 .NET8 開発の準備

.NET8 で開発の準備を行うためのコマンドは次の通り。

■.NET8 SDK のインストール
winget install Microsoft.DotNet.SDK.8

■Entity FrameWork のインストール
dotnet tool install --global dotnet-ef

2024.01.03 Dropbox 同期問題

Visual Studio で開発している際、Dropbox とファイルが同期されるように設定している。開発中はファイルのロックがかかっている場合があるので、同期ができない場合があるのは仕方ない。

しかし、開発終了後、Visual Studio を終了しても同期が完了できないファイルがある。

Project - .vs (隠しフォルダ)  - プロジェクト名フォルダ - FileContentIndex の *.vsidx ファイルである。

解決方法としては、.vs フォルダが隠しフォルダになっているので、通常フォルダにすれば、同期が完了する。

2023.02.21 Visual Studio 2022 17.5.0

2023.02.21 に 17.5.0 がリリースされた。
Visual Studio 2022 Release Notes | Microsoft Learn

アップデート後、問題なく使用できていたが、あることに気付いた。Entity FrameWork のデザイナを更新してもデータベースの変更が反映されない。

何度も同じダイアログが繰り返されたりと安定しない。

解決策は、もう一度データベースの接続の作成からやり直すこと。そうすれば、正常にデータベースの変更が反映される。

2023.02.18 Visual Studio 2022 17.4.5

2023.02.14 に 17.4.5 がリリースされた。
Visual Studio 2022 リリース ノート | Microsoft Learn

アップデート後、最初に気付いたのは、エディタのキーワードの色が変わったことだった。これはどうということではない。

そして、なぜか変数の名前変更で、F2 が動作しない。以前 Visual Studio の大幅アップデートで、Ctrl+R, Ctrl+R という割り当てに変更され、F2 に戻したのだが、この割り当ても元に戻ってしまったようだ。どうも今回のアップデートで全体的に設定がデフォルトに戻ったようだ。

Excel でも VIsual Studio でも F2 キーは頻繁に使用するキーだ。

2022.07.02 ClosedXML

.NET Framework 4.8 で作成したプロジェクトに ClosedXML 0.97をインストールしようとしたところ、次のエラーが発生した。

エラー 依存関係 'SixLabors.Fonts' を解決できません。使用されているソース: 'nuget.org', 'Microsoft Visual Studio Offline Packages'。

プロジェクトを .NET 6 にコンバートして、インストールしたところ、あっさりできた。

.NET Framework 4.8 で作成したプロジェクトにインストールしたい場合は 0.96 までのようだ。

2022.07.01 EntityFramework 6.4.4

EntityFramework 6.4.4 が公開されている。6.2.0 からバージョンアップをしようとしたが、次のエラーが発生した。

依存関係を解決できません。'EntityFramework 6.4.4' は 'EntityFramework.ja 6.2.0 制約: EntityFramework (= 6.2.0)' と互換性がありません。

つまり、日本化のパッケージはないということだ。エラーメッセージが表示されたた場合は、英語のままとなる。

特に問題はないので、アップデートした。

2022.06.14 便利なキー入力

  • 閉じるかっこが自動補完された場合は、直後に tab キーを入力すると、閉じるかっこを飛ばして、文末方向に移動できる。これで、セミコロンを入力するのが楽になる。
  • Ctrl+Enter:カーソルが行の途中に存在していても、空白行を挿入する。
  • Shift + Delete : 行削除する。
  • Ctrl + C : 行全体を選択していなくても、行コピーする
  • Ctrl をしながら変数やメソッドをクリック : マウスポインタをあてた時点でリンクに代わり、クリックすると、その定義に移動する。特にメソッドの内容を編集したいときに便利である。

2022.05.03 名前の変更

Visual Studio 2022 では、名前の変更のショットカットが F2 から Ctr+R, Ctr+R に変更されています。元に戻すにはオプション設定で変更します。

2022.04.20 PerfWatson2.exe の問題

Visual Studio で開発を行っている最中、作業をやり直したいときには、一度開発環境を終了して、プロジェクトフォルダを削除したり、名前を変更したりして、変更を破棄したい場合があります。しかし、開発環境を終了しても、フォルダの削除や名前変更をしようとすると、下記のメッセージが表示されます。できるようになるまでには、数分待つ必要があります。

最初は DropBox を疑いましたが、違いました。resmon.exe で誰がフォルダやファイルを握りっぱなしにしているのか調べてみると、PerfWatson2.exe が出てきました。Google 先生に聞いてもこいつが何なのかはなかなか出てきません。開発環境を終了して、フォルダ削除や名称変更するには、次のコマンドを叩いて解決できます。

taskkill /f /im perfwatson2.exe

2020.11.15 Visual Studio マイコードのみのデバッグ

Visual Studio で最初にデバッグを開始すると、マイコードに関するダイアログが表示される。

これまで、その内容がいつも分からずそのままにしていた。そこで今回出たタイミングできちんと調べてみた。

基本的には、初期設定で、マイコードのみのを有効にするにチェックが付いている。マイコードのみを使用すると、デバッグ機能が低下しますとあるが、逆なのではないかと思ってしまう。

自分が調べた結果はこんな感じだ。

  • マイコードのみを有効:アプリケーションエラーが発生した場合、コードウインドウが開いて、デバッグができる。
  • マイコードのみを無効:通常のリリースモードで動作しているように、アプリケーションエラーのダイアログが表示され、閉じるとアプリも終了してしまう。

上記のダイアログで設定をした後でも、オプションで変更は可能である。

イミディエイトウィンドウで変数の表示

Visual Studio 2019 イミディエイトウィンドウで変数の表示をするには、? <変数名> を入力するものだと思い込んでいた。いつの頃から忘れたが、Visual Studio 5 とか 6 の頃は使っていた。

しかし、? は不要みたいだ。単に変数名を入力するだけで OK だ。

Visual Studio 2015 の覚書です。

マップモードを有効にする

範囲が指定されている時、検索と置換の対象を範囲にする

-Microsoft Visual Studio