Microsoft Visual Studio

Microsoft Visual Studio 開発時エラー

2022.04.12 System.InvalidCastException: '型 'Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。

C# で開発したアプリで、Excel 経由で印刷を行う際にエラーが発生した。

System.InvalidCastException: '型 'Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。IID '{000208D5-0000-0000-C000-000000000046}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: 要素が見つかりません。 (HRESULT からの例外:0x8002802B (TYPE_E_ELEMENTNOTFOUND))。'

これまで正常に動作していたのだが、突然エラーが発生した。他の環境では正常に動作しているため、開発環境のマシンだけと考えられた。

そこで、appwiz.cpl を開き、Microsoft 365 Apps for enterprise のクイック修復を実行したところ、正常となった。おそらくであるが、Visio をインストールしたことが原因ではないかと推測される。

2020.12.17 C# マネージド デバッグ アシスタント 'ContextSwitchDeadlock' : 'CLR は、COM コンテキスト 0x46a7260 から COM コンテキスト 0x46a71a8 へ 60 秒で移行できませんでした。

C# で開発したアプリを実行中にエラーが発生した。

マネージド デバッグ アシスタント 'ContextSwitchDeadlock' : 'CLR は、COM コンテキスト 0x46a7260 から COM コンテキスト 0x46a71a8 へ 60 秒で移行できませんでした。ターゲット コンテキストおよびアパートメントを所有するスレッドが、ポンプしない待機を行っているか、Windows のメッセージを表示しないで非常に長い実行操作を処理しているかのどちらかです。この状態は通常、パフォーマンスを低下させたり、アプリケーションが応答していない状態および増え続けるメモリ使用を導く可能性があります。この問題を回避するには、すべての Single Thread Apartment (STA) のスレッドが、CoWaitForMultipleHandles のようなポンプする待機プリミティブを使用するか、長い実行操作中に定期的にメッセージをポンプしなければなりません。'

これだけ見ても何を言っているのかわからない。Entity Framework を使用してデータベースアクセスしている箇所でエラーが発生していることはわかる。おそらくクエリーの書き方が問題だと思う。要はタイムアウトだな。

ちなみにもう一度実行するとエラーは発生せず、正常に終了した。

2020.01.18 C# System.Data.Common.DbDataReader ExecuteStoreCommands(System.Data.Entity.Core.EntityClient.EntityCommand, System.Data.CommandBehavior)

C# で開発したアプリでエラーが発生した。

場所 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
場所 System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
場所 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__6()
場所 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
場所 System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__5()
場所 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
場所 System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
場所 System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
場所 System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()

これまで正常に動作していたので、直感的にデータ量だと推測した。複数のテーブルを join しているが、いわゆる inner join だったので、outer join に変更し、join する範囲を絞ったところ正常に動作するようになった。

2016.02.12 エラー CS1936 ソース型 'DbSet<(tablename)>' のクエリ パターンの実装が見つかりませんでした。'Select' が見つかりません。

Visual Studio 2015 で、データベースに対して、Entity Framework を経由してアクセスするコードを書いている際に「クエリ パターンの実装が見つかりませんでした。'Select' が見つかりません。」エラーが発生した。

このエラーを解決するには、using System.Linq; を追加します。通常、何らかの定義が足りない場合には、マウスカーソルをエラーに充てると、黄色ランプのアイコンが出現して、追加すべきものを提示してくれますが、このケースの場合にはそれがありません。

-Microsoft Visual Studio