【Visual Studio 2022】C#+SeleniumでChromeが起動しなくなった際にやった手順


結構ハマった

Visual Studio2017で元々開発していたプロジェクトをVisual Studio2022にして起動したところ、なぜか

chrome = new ChromeDriver(driverService, options);

の部分でエラーが発生し落ちる様になりました。

try catchで囲んでエラーをハンドリングしてみると

C:\WINDOWS\system32>Install-Package System.Buffers -Version 4.0.2
‘Install-Package’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

というエラーメッセージが表示されました。

エラーが解消されるまでに行った事をメモっておきます。

CreateDefaultServiceの引数にchromedriver.exeの含まれているパスを指定

string currentPath = Application.StartupPath;
                var driverService = ChromeDriverService.CreateDefaultService(currentPath);


ツール(T) > NuGetパッケーマネージャー(N) > パッケージマネージャーコンソール(O)

ターミナルが表示されるのでそこに

Install-Package System.Buffers -Version 4.5.0

と入力し実行します。

すると

‘.NETFramework,Version=v4.8’ を対象とするプロジェクト ‘MyBenefitTool’ に関して、パッケージ ‘System.Buffers.4.5.0’ の依存関係情報の収集を試行しています
依存関係情報の収集に 799 ミリ秒 かかりました
DependencyBehavior ‘Lowest’ でパッケージ ‘System.Buffers.4.5.0’ の依存関係の解決を試行しています・・・・

というメッセージが表示され処理が行われます。

コマンド実行でエラーが解消された理由

Install-Package System.Buffers -Version 4.5.0 を実行して正常に動作するようになった理由は、いくつか考えられます。

 バージョンの互換性の問題

System.Buffers 4.0.2 は古いバージョンで、特に .NET Framework 4.8 との互換性に問題があった可能性があります。一方、System.Buffers 4.5.0 はその後のバージョンで、.NET Framework 4.8 や他の環境での互換性が改善されています。4.5.0 は、古いバージョンよりも最新のパッチが適用されており、より安定して動作する可能性があります。

 依存関係の解決

NuGet パッケージには他のパッケージに依存している場合があります。4.5.0 バージョンでは、必要な依存関係が改善されたり、適切に設定された結果として正常に動作した可能性があります。バージョンアップで依存関係の解決が正しく行われ、エラーが解消されたということです。

リリースノートやバグ修正

System.Buffers のバージョン 4.5.0 は、バージョン 4.0.2 に比べていくつかのバグ修正やパフォーマンス改善が行われている可能性があります。特に、アセンブリのマニフェストや参照の問題が解消されている場合、古いバージョンでは発生していたエラーが新しいバージョンでは修正されていることがあります。

ターゲットプラットフォームとの互換性

System.Buffers 4.5.0 は、.NET Framework 4.8 などの古いプラットフォームと互換性があるように最適化されており、そのためエラーなく動作するようになったということも考えられます。特に .NET Framework での依存関係の解決や、バージョン間の整合性が改善されている場合があります。

結論

System.Buffers 4.5.0 バージョンは、より新しいバージョンであり、.NET Framework 4.8 との互換性が向上しているため、古いバージョン(4.0.2)で発生していたエラーが解消され、正常に動作するようになったということです。このように、最新のバージョンを使用することで、互換性や依存関係の問題が改善されることがよくあります。

■他の人はこちらも見ています。■


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA