ユーザ用ツール

サイト用ツール


it技術:dotnet

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
it技術:dotnet [2020/12/19 16:50] – [複数選択のコンボボックス] yajuadminit技術:dotnet [2022/06/23 17:23] (現在) – [Windowsのディレクトリ構成ガイドライン] yajuadmin
行 38: 行 38:
 |なし(配下はある)|%PUBLIC%|C:\Users\Public| |なし(配下はある)|%PUBLIC%|C:\Users\Public|
 |CommonApplicationData|%PROGRAMDATA%|C:\ProgramData| |CommonApplicationData|%PROGRAMDATA%|C:\ProgramData|
 +
 +===== DebugとReleaseの違い =====
 +Releaseの方がコードサイズが小さくなります。\\
 +[[https://qiita.com/ChanyaKushima/items/a9dc549977cd44adb300|C#のDebug/Releaseコンパイルはどう違うの?]]
 +
 +=== Debug ===
 +  * 条件付きコンパイルの定数:DEBUG,TRACE
 +  * コードの最適化:ON
 +  * デバッグ情報:FULL
 +
 +=== Release ===
 +  * 条件付きコンパイルの定数:TRACE
 +  * コードの最適化:OFF
 +  * デバッグ情報:pdb-only
  
 ===== 初回起動が遅い ===== ===== 初回起動が遅い =====
 +「エンド・ユーザーは、0.5秒のフリーズでストレスを感じ、3秒のフリーズはバグだと思う」。昔、冗談半分に言ってみた言葉だが、回りの反応を見るに、割とみな思っていることらしい。\\
 +https://atmarkit.itmedia.co.jp/ait/articles/1109/30/news126.html
 +
 +[[https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/1b743b77-d208-46d2-9fcf-25866384fc5b/netframework1245012503125221246512540124711251912531124342102122238?forum=csharpgeneralja|.NetFrameworkアプリケーションを初回読み込みから速くするには? - MSDNフォーラム]]
 +
 別の.NETアプリケーションが既に動作していれば起動は速いがPC起動時など遅い。\\ 別の.NETアプリケーションが既に動作していれば起動は速いがPC起動時など遅い。\\
 理由は、.NET Framework 自体のロードをファイルシステム・キャッシュ上に乗せるためで「コールド スタート」と呼ばれる、別の.NETアプリケーションが既に動作していると「ウォーム スタート」となる。\\ 理由は、.NET Framework 自体のロードをファイルシステム・キャッシュ上に乗せるためで「コールド スタート」と呼ばれる、別の.NETアプリケーションが既に動作していると「ウォーム スタート」となる。\\
 ウォーム スタートは、主要なCLRコンポーネント用のページの殆どが既にメモリに読み込まれているときに発生し、貴重なディスクアクセス時間が節約されます。このため、マネージ アプリケーションを再度実行すると、初回よりも短い時間で起動します。\\ ウォーム スタートは、主要なCLRコンポーネント用のページの殆どが既にメモリに読み込まれているときに発生し、貴重なディスクアクセス時間が節約されます。このため、マネージ アプリケーションを再度実行すると、初回よりも短い時間で起動します。\\
 [[https://msdn.microsoft.com/ja-jp/library/cc656914(v=vs.110).aspx|アプリケーションの起動時間]] [[https://msdn.microsoft.com/ja-jp/library/cc656914(v=vs.110).aspx|アプリケーションの起動時間]]
 +
 +コールドスタートアップはIOバウンドだから当然ngenでは速くならない。2度目以降の起動時間が短くなるのは、OSが一度読んだブロックをメモリにキャッシュしているから。
  
 起動を速くするににプリコンパイルする「Ngen.exe」を使用する方法がある。インストール時にカスタムアクションでNgen.exeでプリコンパイルするといった手法もある。\\ 起動を速くするににプリコンパイルする「Ngen.exe」を使用する方法がある。インストール時にカスタムアクションでNgen.exeでプリコンパイルするといった手法もある。\\
 [[https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2010/3hwzzhyd(v=vs.100)|チュートリアル : カスタム動作を使用して、インストール中にアセンブリをプリコンパイルする]]\\ [[https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2010/3hwzzhyd(v=vs.100)|チュートリアル : カスタム動作を使用して、インストール中にアセンブリをプリコンパイルする]]\\
 但しプリコンパイルの効果は永続的ではなく、.NET Frameworkなどのバージョンが変わったりなどの条件によって効果が消えてしまう。\\ 但しプリコンパイルの効果は永続的ではなく、.NET Frameworkなどのバージョンが変わったりなどの条件によって効果が消えてしまう。\\
-[[https://msdn.microsoft.com/ja-jp/library/6t9t5wcf(v=vs.90).aspx|ネイティブ イメージ ジェネレータ (Ngen.exe)]]+  * [[https://msdn.microsoft.com/ja-jp/library/6t9t5wcf(v=vs.90).aspx|ネイティブ イメージ ジェネレータ (Ngen.exe)]] 
 +  * [[https://code-examples.net/ja/q/13aa43c|ngen.exeはどのようにいつ動作しますか?]]
  
 .NET 4.5以降では、NgenがWindowsサービスとして動いている(Auto-Ngen)\\ .NET 4.5以降では、NgenがWindowsサービスとして動いている(Auto-Ngen)\\
-基本的に、.NETランタイムは、管理対象アプリケーションの使用ログを生成します。システムがアイドル状態の場合、自動メンテナンスタスクがバックグラウンドで実行され、ネイティブイメージが生成されます。これにより、開発者はNGenを明示的に扱う必要がなくなります。<wrap em>※但し、GACアセンブリのみ</wrap>+基本的に、.NETランタイムは、管理対象アプリケーションの使用ログを生成します。システムがアイドル状態の場合、自動メンテナンスタスクがバックグラウンドで実行され、ネイティブイメージが生成されます。これにより、開発者はNGenを明示的に扱う必要がなくなります。<wrap em>※但し、GACアセンブリのみ</wrap>\\ 
 +※.NET 5以降(旧.NET Core)では、GACの概念は存在しなくなる。\\ 
 +[[https://www.infoq.com/jp/news/2021/02/net-5-breaking-changes-2/|.NET 5の重大な変更点を歴史的テクノロジの面から見る]] 
  
 他にも64bit OS上だとJITのパフォーマンスが悪くなるとの報告がある。x86で作成すると良いらしい。\\ 他にも64bit OS上だとJITのパフォーマンスが悪くなるとの報告がある。x86で作成すると良いらしい。\\
行 66: 行 91:
   * [[https://qiita.com/m_hama123/items/f8cb0ddf192099491bc7|.NET Frameworkがアセンブリを検索する順番と確認するためのツール]]   * [[https://qiita.com/m_hama123/items/f8cb0ddf192099491bc7|.NET Frameworkがアセンブリを検索する順番と確認するためのツール]]
   * [[https://qiita.com/mintcandy/items/9d5cfff8748424dc9109|C#のプログラムが遅いときにもしかしたら高速化するかもしれないたった1行のおまじない [STAThread]]]   * [[https://qiita.com/mintcandy/items/9d5cfff8748424dc9109|C#のプログラムが遅いときにもしかしたら高速化するかもしれないたった1行のおまじない [STAThread]]]
 +
 ===== アセンブリの厳密名と特定バージョンについて ===== ===== アセンブリの厳密名と特定バージョンについて =====
 ==== 厳密名について ==== ==== 厳密名について ====
行 250: 行 276:
   * [[https://www.codeproject.com/Articles/21085/CheckBox-ComboBox-Extending-the-ComboBox-Class-and|CheckBox ComboBox Extending the ComboBox Class and Its Items]]   * [[https://www.codeproject.com/Articles/21085/CheckBox-ComboBox-Extending-the-ComboBox-Class-and|CheckBox ComboBox Extending the ComboBox Class and Its Items]]
   * [[https://www.codeproject.com/Articles/31105/A-ComboBox-with-a-CheckedListBox-as-a-Dropdown|A ComboBox with a CheckedListBox as a Dropdown]]   * [[https://www.codeproject.com/Articles/31105/A-ComboBox-with-a-CheckedListBox-as-a-Dropdown|A ComboBox with a CheckedListBox as a Dropdown]]
-  * [Multi Select ComboBox in WPF](https://www.codeproject.com/Articles/563862/Multi-Select-ComboBox-in-WPF)+  * [[https://www.codeproject.com/Articles/563862/Multi-Select-ComboBox-in-WPF|Multi Select ComboBox in WPF]]
  
 ==== その他 ==== ==== その他 ====
it技術/dotnet.1608364241.txt.gz · 最終更新: 2020/12/19 16:50 by yajuadmin