タグ: C#

  • 公式サンプルのソースコードであっても、信じてはいけないという話

    Microsoftの公式サンプルのソースコードであっても、信じてはいけないという話。サンプルコードを使うと、Windowsのメモリ不足を引き起こすかもしれないという。

    Windowsのメモリ不足、公式サンプルコードのコピーだけで発生する可能性 https://news.mynavi.jp/techplus/article/20250526-3333822/

    多くの場合、メモリ不足は無限にメモリを消費するプログラムのバグが原因で引き起こされる。今回の例もプログラムのバグを原因とするが、公式のサンプルコードをコピーしただけで発生するという。

    かなり無理に近いけれど、公式サンプルをコピペして使う場合でも、その設定内容や何を行っているのか、を理解した上(理解しょうとした上)で使わないといけないわけだ。昔は、そういうのを信じるな、と言われたものだが。公式のサンプルコードくらいは信用したかった。今後は、生成AIが生成したコードがそれにあたるのだろう。その場合は、別の複数のAIにチェックさせて、合議する感じだろうか。もしくは人でチェックか。どちらにしても、最終的には、採用した(そのコードを使った)人の責任なわけだ。

  • .NET8のアプリで急に動作が遅くなるときがある。

    .NET8のアプリで急に動作が遅くなるときがある。このときは、Dynamic PGOを疑ってみるといい。

    .NET8のDynamic PGOは、基本的にはアプリ実行が早くなる。アプリのサイズが巨大で、ほとんど使われない機能があり、いろいろな機能を呼び出しているときは、一定の閾値をこえると急激に遅くなることがある。これは、Dynamic PGOの特性のようだ。

    Bing on .NET 8: The Impact of Dynamic PGO
    https://devblogs.microsoft.com/dotnet/bing-on-dotnet-8-the-impact-of-dynamic-pgo

  • .NET6から.NET8に変更して実行したらSQLServerとの接続でエラー

    .NET6のサポート終了が近づいているので、.NET8に変更して実行したところ、SQL Serverとの接続でエラーが発生した。

    An unhandled exception occurred while processing the request.
    Win32Exception: 信頼されていない機関によって証明書チェーンが発行されました。
    Unknown location
    
    SqlException: A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 信頼されていない機関によって証明書チェーンが発行されました。)
    Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, bool breakConnection, Action<Action> wrapCloseInAction)

    「Microsoft.Data.SqlClient パッケージ」の破壊的変更の影響だった。対処としては、ConnectionStringsの接続文字列の最後に、「TrustServerCertificate=True;」を追加した。下記みたいな感じ。

      "ConnectionStrings": {
           ~~~略~~~;Database=DBname;TrustServerCertificate=True
      },

    これでもう一度実行して、実行できることを確認した。

    参考: https://learn.microsoft.com/ja-jp/ef/core/what-is-new/ef-core-7.0/breaking-changes?tabs=v7

  • C#9 は.NET5から使える

    プログラミング言語のC#9がリリースされている。C#9は、.NET5とセットなので、使用するのは、.NET5のインストールが必要。