Когда я перекомпилирую свой проект (asp.net, С#) с aspnet_compiler, восстановленные бинарные файлы изменяются (по сравнению с предыдущей сборкой), даже если никаких изменений кода не было сделано.
Это, я понимаю, связано с тем, что сборка генерирует новый идентификатор версии модуля (guid) каждый раз, когда он строит (чтобы различать сборки), другой аналогичный вопрос говорит об этом: Могу ли я указать идентификатор версии модуля (MVID) при создании сборки .net?
Этот связанный вопрос, кажется, предполагает, что нет способа перестроить проект и иметь двоичные файлы в соответствии с предыдущей сборкой того же неизмененного кода. ОК, хорошо, я понимаю - но почему все двоичные файлы перестраиваются вообще
Я думаю, согласно документации (http://msdn.microsoft.com/en-us/library/ms229863(v=vs.80).aspx), что, если в качестве аргумента не указано значение -c, aspnet_compiler должен перестройте те бинарные файлы, которые на самом деле должны быть (из-за измененного кода). Я не понимаю или, возможно, что-то не хватает?
Аргументы aspnet_compiler, которые я использую:
aspnet_compiler -f -u -fixednames -nologo -v / -p .\myproject\ .\mybuild\
Обратите внимание, что эта проблема возникает только с проектом WebSite, а не с проектом Web Application (они скомпилированы по-разному). Также эта проблема возникает, даже если вы создаете проект и страницу WebSite без каких-либо функций и никогда не открываете его или не меняете его в любом случае между сборками.
Декомпиляция созданных двоичных файлов не показывает различий. Сравнение двоичных файлов из двух "идентичных" построений показывает небольшие различия в одной и той же части двоичных файлов каждый раз, что, по моему мнению, связано, вероятно, со случайным построением guid. Я не нашел способа избежать этого изменения между сборками.