4

毎晩自動的にビルドされる共有アセンブリがいくつかあります。ソースに変更が加えられていない場合、アセンブリ バイナリは以前のバージョンとまったく同じであると予想されます。

ただし、アセンブリ間には若干の違いがあるようです。

2 つのビルドの違いを特定するために、いくつかの努力をしました。以前ildasmは il バージョンを生成し、結果のテキスト バージョンを比較しました。(IL での) 唯一の違いは、モジュールの MVID (ランダム GUID) です。

いくつかのグーグルは、モジュールのバージョンIDがコンパイラによって生成されることを教えてくれるので、他のすべてが同じであっても、ビルドソースを特定することができます。

この MVID は、同じコードのビルド間に人為的な差分を作成し、結果のアセンブリの人為的なチェックインを作成します。

MVID を C# コンパイラに提供することは可能ですか?

4

2 に答える 2

6

ECMA-335 標準は次のように述べています。

MVID は、同じモジュールの 2 つのバージョンを区別するために使用される Guid です。

この説明に基づいて、これをC#コンパイラへの引数として指定すると、異なるビルドに同じMVIDを渡すことができるため、その目的が無効になるため、いいえと言います.

必ずしも毎晩ではなく、何かが変化したときにのみ構築する方が簡単な方法だと思います。

于 2011-04-08T17:06:03.583 に答える
3

これは5年前の質問だと思いますが、アセンブリのカスタムMVIDを指定できるFodyアドインを作成しました(私自身のテストに必要です)

ナゲット経由で取得できます:

Install-Package Mvid.Fody

次に、次のようにカスタム MVID を指定できます。

[assembly: Mvid("your-guid-string-here")]

アセンブリがコンパイルされると、指定した Guid を持つ MVID が作成されます。

詳細はこちら: https://github.com/hmemcpy/Mvid.Fody

于 2016-03-11T21:21:13.983 に答える