メインコンテンツまでスキップ

Visual Studio 2017以降ではコードコントラクトはサポートされていなかった

仕事の中でGithubから少し古いdllのソースコードを調査することがありました。
ダウンロードしてデバッグ実行をするとこんなエラーなりました。

LogoutImage 実行前の状態が失敗しました。

実行できなかったので、どうしたものかと思い調べているとMicrosoftに
Code Contracts(契約プログラミング)の記事を見つけました。
https://docs.microsoft.com/ja-jp/dotnet/framework/debug-trace-profile/code-contracts

ざっくり言うと、メソッドに入るとき、出るときの条件を記述して、それを満たしていないとエラーにするものですかね。

確かにGitHubに公開されていたDLLでは事前条件のコード
Contract.Requires(passObject != null);
があり、正しくない形で呼ばれたときに弾くために記載されていました。

記事にも書いてある通り.NET 5以降はサポートされていないのでVisualStudioでも2017以降はサポートされていませんでした。
結局、Contract系のメソッドを全部消して動作させました。