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

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

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

実行できなかったので、どうしたものかと思い調べていると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系のメソッドを全部消して動作させました。

コメントを残す

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

CAPTCHA