В Noda Time мы создаем нашу документацию с помощью Sandcastle и SHFB. Затем мы передаем документацию обратно в исходный репозиторий - прежде всего потому, что это упрощает просмотр последних (и исторических) документов.
Я - основной разработчик проекта, но я использую два компьютера - и, к сожалению, на данный момент они строят другую документацию, даже если они оба обновлены до того же источника.
Два компьютера одинаковы по всем важным причинам, о которых я могу думать:
- Sandcastle 2.7.2.0
- SHFB 1.9.6.0
- VS 2012 Professional (обе версии 11.0.50727.1 в разделе "Программы", как "Версия 11.0.51106.01 Обновление 1" на странице "О программе" ).
- Последняя версия содержимого локальной справки для .NET Framework 4.5 (и не содержит содержимого локальной справки для других версий фреймворка)
Шаги, предпринятые для обеспечения чистой сборки:
- Удалена папка кэша SHFB (
C:\Users\Jon\AppData\Local\EWSoftware\Sandcastle Help File Builder\Cache
) - Удаленная папка, сгенерированная документацией, в
- Удален файл настроек пользователя, связанный с файлом проекта SHFB
- Удаленный кеш символов в Visual Studio
Тем не менее различия остаются. Они, по-видимому, ограничены документацией, унаследованной от самого MSDN, в частности Object.Finalize
.
Версия 1 (сгенерирована на машине "Chubby" ):
<div class="summary">Allows an object to try to free resources and perform
other cleanup operations before it is reclaimed by garbage collection.</div>
Версия 2 (сгенерирована на машине "Sandy" ):
<div class="summary">Allows an <a
href="#" onclick="location.href='http://msdn2.microsoft.com/en-us/library/e5kfa45b'; return false;" target="_blank">
Object</a> to attempt to free resources and perform other cleanup operations
before the <a href="#" onclick="location.href='http://msdn2.microsoft.com/en-us/library/e5kfa45b'; return false;"
target="_blank">Object</a> is reclaimed by garbage collection.</div>
Оба ссылаются на одну и ту же документацию MSDN, которая выглядит как версия 1 (нет ссылок на Object
).
Если посмотреть на несколько измененных файлов, изменение согласовано и ограничено этим элементом.
Где Sandcastle может получить эту документацию, и как я могу заставить оба компьютера вести себя одинаково?
EDIT: еще один фрагмент информации - после очистки кеша и восстановления документов на обеих машинах в каталоге SHFB Cache есть три файла:
- Reflection.cache имеет одинаковый размер на обеих машинах
- MsdnUrl.cache имеет одинаковый размер на обеих машинах
- .NETFramework_4.0.0319_E8879A28.cache имеет размер 13 377 733 байт на Chubby и 13 337 949 байт на Sandy
EDIT: Значительный прогресс! Я нашел, где разница, вероятно, исходит от...
Файл c:\Windows\Microsoft.NET\Framework\v2.0.50727\en\mscorlib.xml
:
- В Chubby есть 8 005 263 байт с датой 12 декабря 2011 года и имеет не связанный текст для
Finalize
- On Sandy - 9 740 370 байт с датой 31 августа 2009 года и имеет текст для
Finalize
, который включает ссылки
На обеих машинах сам mscorlib.dll
имеет тот же размер (4,550,656 байт) и имеет модифицированную дату 13 сентября 2012 года.
Но как я могу заставить их быть одинаковыми? Откуда эта разница? (Пакеты услуг?)
EDIT: Хорошо, версия в c:\Windows
была красной селедкой - это виновата версия в c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework
. Я собираюсь посмотреть, могу ли я узнать, почему это может быть различно между установками...