Могу ли я указать идентификатор версии модуля (MVID) при сборке сборки .net? - PullRequest
4 голосов
/ 08 апреля 2011

У нас есть несколько общих сборок, которые собираются автоматически каждую ночь. Если в исходные тексты не внесены изменения, я ожидаю, что двоичные файлы сборки будут точно такими же, как и в предыдущей версии.

Однако между сборками, похоже, есть небольшие различия.

Я приложил некоторые усилия, чтобы определить разницу между двумя сборками. Я использовал ildasm для генерации il-версии и сравнил итоговые текстовые версии. Единственная разница (в IL) - это MVID (случайный указатель) в модуле.

Некоторые поиски в Google говорят мне, что идентификатор версии модуля генерируется компилятором, так что можно определить источник сборки, даже когда все остальное одинаково.

Этот MVID создает искусственную разницу между сборками с одинаковым кодом и искусственную регистрацию полученной сборки.

Возможно ли предоставить MVID компилятору C #?

Ответы [ 2 ]

6 голосов
/ 08 апреля 2011

Стандарт ECMA-335 гласит:

MVID - это Guid, используемый для различения между двумя версиями одного и того же модуль

Исходя из этого описания, предоставление этого аргумента для компилятора C # отрицает его назначение, поскольку вы можете передавать один и тот же MVID для разных сборок, поэтому я бы сказал, нет.

Я думаю, что проще было бы строить только тогда, когда что-то меняется не обязательно каждую ночь.

2 голосов
/ 12 марта 2016

Я понимаю, что это 5-летний вопрос, но я создал Fody плагин, который позволяет вам указать собственный MVID для сборки (необходимый для моих собственных тестов)

Выможно получить через nuget:

Install-Package Mvid.Fody

Затем вы можете указать собственный MVID, например:

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

Когда сборка будет скомпилирована, она будет иметь MVIDс указанным гидом.

Более подробная информация здесь: https://github.com/hmemcpy/Mvid.Fody

...