2013-02-16 8 views
46

In Noda Time, generiamo la nostra documentazione utilizzando Sandcastle e SHFB. Riportiamo quindi la documentazione nel repository di origine, principalmente perché ciò semplifica la visualizzazione dei documenti più recenti (e storici).Come posso scoprire cosa sta causando differenze nei documenti generati da Sandcastle?

Sono lo sviluppatore principale del progetto, ma utilizzo due computer e, sfortunatamente, al momento stanno costruendo documentazione diversa pur essendo entrambi aggiornati alla stessa fonte.

I due computer sono gli stessi in ogni modo importante che posso pensare:

  • Sandcastle 2.7.2.0
  • SHFB 1.9.6.0
  • VS 2012 professionisti (sia la versione 11.0.50727.1 presentate nel "Programmi", entrambi "Versione 11.0.51106.01 Aggiornamento 1" nella pagina "Informazioni")
  • Ultima versione del contenuto della guida locale per .NET Framework 4.5 (e nessun contenuto della guida locale per altre versioni di framework)

misure adottate per garantire una generazione pulita:

  • eliminata la cartella della cache SHFB (C:\Users\Jon\AppData\Local\EWSoftware\Sandcastle Help File Builder\Cache)
  • eliminato la cartella viene generata la documentazione in
  • eliminato il file impostazioni utente relative al file di progetto SHFB
  • cancellato la cache di simbolo in Visual Studio

Eppure le differenze rimangono. Sembrano essere limitati alla documentazione ereditata da MSDN stesso, in particolare Object.Finalize.

Versione 1 (generato sulla macchina "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> 

versione 2 (generato sulla macchina "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> 

Sia collegamento alla stessa documentazione MSDN, che sembra come la versione 1 (nessun collegamento a Object).

Guardando alcuni dei file modificati, la modifica è coerente e limitata a questo membro.

Da dove potrebbe essere ottenuta questa documentazione da Sandcastle e in che modo è possibile che entrambi i computer si comportino allo stesso modo?

EDIT: Un altro frammento di informazioni - dopo la pulizia della cache e ricostruire la documentazione su entrambe le macchine, ci sono tre file nella directory SHFB cache:

  • Reflection.cache ha le stesse dimensioni su entrambe le macchine
  • MsdnUrl.cache ha la stessa dimensione su entrambe le macchine
  • .NETFramework_4.0.0319_E8879A28.la cache ha dimensioni 13.377.733 byte su Chubby e 13.337.949 byte su Sandy

EDIT: Progressi significativi! Ho trovato in cui la differenza è probabilmente provenienti da ...

Il file c:\Windows\Microsoft.NET\Framework\v2.0.50727\en\mscorlib.xml:

  • Su Chubby è 8,005,263 byte con una data del 12 dicembre 2011, e ha il testo non collegato per Finalize
  • su Sandy è 9,740,370 byte con una data del 31 agosto 2009 e ha il testo per Finalize che include i collegamenti

su entrambe le macchine, mscorlib.dll sé è la stessa dimensione (4.550 , 656 byte) e ha una data modificata del 13 settembre 2012.

Ma come posso far sì che siano uguali? Da dove viene questa differenza? (Service pack?)

EDIT: Va bene, la versione in c:\Windows era un'aringa rossa - è la versione in c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework che è la colpa. Vado a vedere se riesco a scoprire il motivo che potrebbe essere diverso tra le installazioni ...

+1

siete sicuramente sicuro che non ci sia un'altra versione nel tuo percorso dell'eseguibile SC? Hmm, c'è un comando "che" di Unix che è utilizzabile per Windows, forse. – larsw

+2

@larsw: C'è un solo file SandcastleHelpFileBuilder.targets su ciascuna macchina :( –

+1

La differenza potrebbe essere dovuta a qualsiasi sistema/aggiornamento/patch di Windows installato su una macchina, ma non sull'altra? versioni del framework .NET sui due macchine in modo identico – stakx

risposta

10

Un paio di idee in considerazione le modifiche recenti, anche se sono d'accordo che è un po 'di tiro al buio ...

vorrei utilizzare uno strumento come "Beyond Compare" per confrontare i file .NET Framework ei file XML su entrambe le macchine ("Folder Compare" profilo). Favorire il confronto livello binario per essere perfettamente sicuro ... se entrambe le macchine sono locali, dovrebbe essere molto veloce.

È inoltre possibile provare a eseguire Process Monitor di Mark Russinovich (http://live.sysinternals.com/procmon.exe) su entrambe le macchine ed eseguire il processo di creazione della documentazione. In questo modo, si vedrà che i file vengono letti da e coinvolti nel processo di costruzione del file di aiuto, e dove si sono provenienti da ... Si otterrà un sacco di uscita come si mostrerà tutto ciò che accade nel vostro sistema; è possibile disabilitare il controllo del registro e della rete, lasciare solo il monitoraggio dei file ed escludere qualsiasi processo non correlato al processo di creazione della documentazione.

Non sono un esperto di generazione di aiuto, ma penso che il testo provenga dai file XML, quindi potresti voler inserire un filtro solo mostrando i file xml.

Se è possibile identificare i file coinvolti, potrebbe essere sufficiente copiarli da una macchina all'altra.

+0

Ho trovato i file coinvolti ora - sono sicuramente gli assembly di riferimento Ho una correzione temporanea rimuovendo la documentazione ereditata, ma voglio anche sapere perché esistono queste differenze. –

+0

Avete i numeri di versione dei diversi gruppi? Se cerchi i numeri di versione utilizzando il sito google: support.microsoft.com trovi qualche KB che li menziona? Una possibilità potrebbe essere un aggiornamento rapido rilasciato dal ciclo di aggiornamento di Windows che sarebbe atterrato su una delle macchine in qualche modo (un'altra app che ha installato l'aggiornamento rapido come prerequisito, ad esempio)? –

+0

Siamo spiacenti, no - i file XML nella directory degli assiemi di riferimento. Ho alcune persone in Microsoft che esaminano cosa potrebbe accadere (perché ci sono due versioni diverse). –