W czasie Noda generujemy naszą dokumentację za pomocą Sandcastle i SHFB. Następnie przekazujemy dokumentację z powrotem do repozytorium źródłowego - głównie dlatego, że ułatwia to przeglądanie najnowszych (i historycznych) dokumentów.Jak mogę się dowiedzieć, co powoduje różnice w generowanych dokumentach Sandcastle?
Jestem głównym programistą projektu, ale używam dwóch komputerów - i niestety obecnie budują one inną dokumentację, mimo że oba są aktualizowane do tego samego źródła.
dwa komputery są takie same w każdej ważnej sposób mogę myśleć:
- Sandcastle 2.7.2.0
- SHFB 1.9.6.0
- VS 2012 Professional (oba zgłoszone w wersji 11.0.50727.1 "Programy", zarówno "Wersja 11.0.51106.01 Aktualizacja 1" na stronie "Informacje")
- Najnowsza wersja lokalnej zawartości pomocy dla programu .NET Framework 4.5 (i bez zawartości pomocy lokalnej dla innych wersji framework)
Kroki podjęte w celu zapewnienia czystej produkcji:
- Usunięty folder SHFB cache (
C:\Users\Jon\AppData\Local\EWSoftware\Sandcastle Help File Builder\Cache
) - Usunięty folder dokumentacja jest generowany w
- usunięty plik ustawień użytkownika związanego z plikiem projektu SHFB
- Usunięto cache symbol w Visual Studio
Nadal pozostają różnice. Wydają się być ograniczone do dokumentacji odziedziczonej po samej MSDN, w szczególności Object.Finalize
.
Wersja 1 (wygenerowane na maszynie "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>
wersja 2 (wygenerowane na maszynie "Sandy"):
<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>
Zarówno Link do tej samej dokumentacji MSDN, który wygląda jak wersja 1 (brak linków do Object
).
Patrząc na kilka zmienionych plików, zmiana jest spójna i ograniczona do tego członka.
Skąd Sandcastle może pobrać tę dokumentację i jak sprawić, by oba komputery zachowywały się w ten sam sposób?
EDIT: Jeszcze jeden fragment informacji - po wyczyszczeniu pamięci podręcznej i odbudowy dokumenty na obu komputerach, istnieją trzy pliki w katalogu SHFB cache:
- Reflection.cache ma ten sam rozmiar na obu maszynach
- MsdnUrl.cache ma taki sam rozmiar na obu komputerach
- .NETFramework_4.0.0319_E8879A28.Pamięć podręczna ma rozmiar 13 377 733 bajtów na Chubby i 13 337 949 bajtów na dysku Sandy
EDYCJA: Znaczący postęp! Znalazłem gdzie różnica jest prawdopodobnie pochodzące z ...
Plik c:\Windows\Microsoft.NET\Framework\v2.0.50727\en\mscorlib.xml
:
- Na Chubby jest 8,005,263 bajtów z dnia 12 grudnia 2011 roku i ma niepołączonych tekst
Finalize
- na Sandy jest 9,740,370 bajtów z dnia 31 sierpnia 2009 roku i ma tekst
Finalize
która zawiera linki
na obu komputerach, mscorlib.dll
sam jest tego samego rozmiaru (4,550 , 656 bajtów) i ma datę modyfikacji 13 września 2012.
Ale jak mogę je ustawić tak, aby były takie same? Skąd się biorą te różnice? (Service packi?)
EDIT: OK, wersja w c:\Windows
była czerwonym śledziem - to jest wersja w c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework
to wina. Zamierzam sprawdzić, czy mogę się dowiedzieć, dlaczego może być inaczej w różnych instalacjach ...
Jesteś pewny, że nie ma innej wersji na twojej ścieżce pliku wykonywalnego SC? Hmm, czy istnieje uniksowe polecenie, które może być użyteczne dla systemu Windows. – larsw
@larsw: Na każdym komputerze znajduje się tylko jeden plik SandcastleHelpFileBuilder.targets :( –
Czy różnica może wynikać z aktualizacji/poprawki systemu Windows/.NET zainstalowanej na jednym komputerze, ale nie z drugiej? Czy zainstalowałeś wszystkie obecne Wersje środowiska .NET na dwóch maszynach w identyczny sposób? – stakx