Roslyn 2.3は、generating reference assembliesの機能を導入しています。これはパブリックタイプとメンバのみを含むアセンブリです。 "deterministic" feature(=>再現可能なビルド)と一緒に使用すると、生成されたリファレンスアセンブリは、パブリックインターフェイスに変更が加えられていない限り、バイナリで同じままです(実装の変更とプライベート/内部のメンバーは関係ありません)。 VS 2017 15.5が出てくる
<PropertyGroup>
<Deterministic>true</Deterministic>
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
</PropertyGroup>
までは、私が(例えば、「定義に行く」)IDEがあるため、すべてのかかるプロジェクトに<CompileUsingReferenceAssemblies>false</CompileUsingReferenceAssemblies>
を追加することをお勧めしていくつかの問題があります。
つまり、あなたのcsprojにこれを追加することができます.NET Coreおよび.NET Standardプロジェクトで使用されている「新しいプロジェクトシステム」を使用していない限り、この機能は使用できません。 (プロジェクトを参照するプロジェクトは、パブリックインターフェイスが変更された場合にのみ再構築されるという考えがあります。これにより、実装が変更された場合に大きなソリューションのインクリメンタルビルドがスピードアップされます)。
これらの変更により、出力にref
フォルダが作成されます。次に、そこにあるassmblyのチェックサムが、各ビルド上の既知のCheksumと一致するかどうかを確認できます。
ああたかったのです。残念ながら、何百ものタイプのinterfaces.dllがあります。確定的なrefアセンブリオプションは、他のインタフェースを追加するたびに新しいチェックサムを持つ新しいアセンブリを再現しますか? – Monga
はい、それは本当です。その場合、このオプションはあなたのためには機能しません。それが誰かを助ける場合に備えて、私は答えを残しておきます –