Как я могу узнать, что вызывает различия в сгенерированных документах Sandcastle?
В Noda Time мы генерируем нашу документацию, используя Sandcastle и SHFB. Затем мы фиксируем документацию обратно в исходный репозиторий - прежде всего потому, что это облегчает просмотр последних (и исторических) документов.
Я являюсь основным разработчиком проекта, но я использую два компьютера - и, к сожалению, на данный момент они создают разную документацию, хотя они оба обновлены до одного и того же источника.
Два компьютера одинаковы во всех важных отношениях, о которых я могу думать:
- Сандкасл 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 (и нет локальной справочной информации для других версий Framework)
Шаги, предпринятые для обеспечения чистой сборки:
- Удалил папку кеша 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 (сгенерирована на машине "Сэнди"):
<div class="summary">Allows an <a
href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">
Object</a> to attempt to free resources and perform other cleanup operations
before the <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b"
target="_blank">Object</a> is reclaimed by garbage collection.</div>
Оба ссылаются на одну и ту же документацию MSDN, которая выглядит как версия 1 (нет ссылок на Object
).
Глядя на некоторые из измененных файлов, изменение является согласованным и ограниченным для этого участника.
Откуда Sandcastle может получить эту документацию и как заставить оба компьютера вести себя одинаково?
РЕДАКТИРОВАТЬ: еще один фрагмент информации - после очистки кеша и перестроения документов на обеих машинах в каталоге SHFB Cache есть три файла:
- Reflection.cache имеет одинаковый размер на обеих машинах
- MsdnUrl.cache имеет одинаковый размер на обеих машинах
- .NETFramework_4.0.0319_E8879A28.cache имеет размер 13377 733 байт на пухлом и 13 337 949 байт на Сэнди
РЕДАКТИРОВАТЬ: Значительный прогресс! Я обнаружил, откуда, вероятно, происходит разница...
Файл c:\Windows\Microsoft.NET\Framework\v2.0.50727\en\mscorlib.xml
:
- На Chubby - 8 005 263 байта с датой 12 декабря 2011 года, и имеет несвязанный текст для
Finalize
- На Сэнди - 9 740 370 байт с датой 31 августа 2009 года, и имеет текст для
Finalize
который включает в себя ссылки
На обеих машинах mscorlib.dll
сам по себе имеет такой же размер (4,550,656 байт) и имеет измененную дату 13 сентября 2012 года.
Но как я могу заставить их быть такими же? Откуда эта разница? (Пакеты обновления?)
РЕДАКТИРОВАТЬ: Хорошо, версия в c:\Windows
была красная сельдь - это версия в c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework
в этом виноват Я собираюсь выяснить, смогу ли я выяснить, почему это может отличаться между установками...
1 ответ
Несколько идей с учетом ваших недавних правок, хотя я согласен, что это немного стреляет в темноте...
Я бы использовал такой инструмент, как "Beyond Compare", чтобы сравнить файлы.Net Framework и XML-файлы на обеих машинах (профиль "Сравнение папок"). Подарите сравнение двоичного уровня, чтобы быть полностью уверенным... если обе ваши машины локальны, это должно быть очень быстро.
Вы также можете попробовать запустить Process Monitor Марка Руссиновича ( http://live.sysinternals.com/procmon.exe) на обеих машинах и запустить процесс построения документации. Таким образом, вы увидите, какие файлы считываются и участвуют в процессе создания файла справки, и откуда они берутся... Вы получите большой вывод, поскольку он покажет все, что происходит в вашей системе; Вы можете отключить мониторинг реестра и сети, оставить только мониторинг файлов, а также исключить любые процессы, не связанные с процессом построения документации.
Я не эксперт по созданию справки, но я думаю, что текст взят из файлов XML, поэтому вы можете захотеть установить фильтр только для отображения файлов XML.
Если вы можете определить соответствующие файлы, вам, возможно, придется скопировать их с одного компьютера на другой.