2013-02-16 21 views
46

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 ...

+1

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

+2

@larsw: Na każdym komputerze znajduje się tylko jeden plik SandcastleHelpFileBuilder.targets :( –

+1

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

Odpowiedz

10

Kilka pomysłów dotyczących twoich ostatnich zmian, chociaż zgadzam się, że to trochę strzelania w ciemności ...

Używałbym narzędzia takiego jak "Beyond Compare" do porównywania plików .Net Framework i plików XML na obu komputerach (profil "folder compare"). Korzystaj z porównania na poziomie binarnym, aby mieć całkowitą pewność ... jeśli obie maszyny są lokalne, powinna być bardzo szybka.

Możesz również spróbować uruchomić Monitor procesu Marka Russinovicha (http://live.sysinternals.com/procmon.exe) na obu komputerach i uruchomić proces tworzenia dokumentacji. W ten sposób zobaczysz, które pliki są odczytywane i zaangażowane w proces tworzenia pliku pomocy i skąd pochodzą ... Otrzymasz dużo danych wyjściowych, ponieważ pokażą wszystko, co dzieje się w twoim systemie; możesz wyłączyć monitorowanie rejestru i sieci, pozostawić tylko monitorowanie pliku, a także wykluczyć dowolny proces niezwiązany z procesem tworzenia dokumentacji.

Nie jestem ekspertem od generowania pomocy, ale myślę, że tekst pochodzi z plików XML, więc możesz chcieć umieścić filtr tylko na plikach xml.

Jeśli możesz zidentyfikować zaangażowane pliki, możesz po prostu skopiować je z jednego komputera na drugi.

+0

Znalazłem pliki zaangażowane teraz - to na pewno zestawy referencyjne Mam tymczasową poprawkę, usuwając dziedziczoną dokumentację, ale chcę też wiedzieć, dlaczego istnieją te różnice. –

+0

Czy masz numery wersji różnych zestawów? Jeśli szukasz numerów wersji za pomocą strony google: support.microsoft.com, czy znajdujesz w nich wzmiankę o KB? Możliwością może być poprawka wydana z cyklu Windows Update, która w jakiś sposób trafiłaby na którąś z twoich maszyn (na przykład inna aplikacja, która zainstalowała poprawkę jako warunek wstępny)? –

+0

Niestety, nie - pliki XML w katalogu złożeń odniesienia. Mam kilku ludzi w firmie Microsoft, którzy zastanawiają się, co może się wydarzyć (dlaczego są dwie różne wersje). –