如何找出造成Sandcastle文档的不同之处?

在Noda时间,我们使用Sandcastle和SHFB生成我们的文档。 然后我们将文档提交到源代码库 – 主要是因为这使得查看最新(和历史)文档变得容易。

我是该项目的主要开发人员,但是我使用了两台计算机 – 不幸的是,目前他们正在构build不同的文档,即使它们都被更新为相同的源文件。

这两台电脑在我所能想到的每一个重要方面都是一样的:

  • 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的本地帮助内容的最新版本(对于其他框架版本没有本地帮助内容)

采取了一些步骤来确保构build清晰:

  • 删除SHFBcaching文件夹( C:\Users\Jon\AppData\Local\EWSoftware\Sandcastle Help File Builder\Cache
  • 删除文档生成到的文件夹
  • 删除了与SHFB项目文件相关的用户设置文件
  • 在Visual Studio中删除了符号caching

仍然存在差异。 它们似乎仅限于从MSDN本身inheritance的文档,特别是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="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可以从哪里得到这个文档,我怎样才能使两台计算机的行为方式相同?

编辑:信息的另一个片段 – 清洗caching和重build两台机器上的文档后,SHFBcaching目录中有三个文件:

  • Reflection.cache在两台机器上具有相同的大小
  • MsdnUrl.cache在两台机器上都具有相同的大小
  • .NETFramework_4.0.0319_E8879A28.cache在Chubby上的大小为13,377,733字节,在Sandy上为13,337,949字节

编辑:重大进展! 我发现差异可能来自…

文件c:\Windows\Microsoft.NET\Framework\v2.0.50727\en\mscorlib.xml

  • 在Chubby上的date是2011年12月12日的8,005,263个字节,并且具有Finalize的非链接文本
  • 在Sandy上是9,740,370个字节,date是2009年8月31日,并且包含链接的Finalize文本

在这两台机器上, mscorlib.dll本身大小相同(4,550,656字节),修改date为2012年9月13日。

但是我怎么能让他们变得一样呢? 这种差异从哪里来? (服务包?)

编辑:好的,在c:\Windows的版本是一个红鲱鱼 – 这是在c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework这是怪。 我要去看看能不能找出为什么安装不同

考虑到你最近的编辑,有一些想法,虽然我同意它在黑暗中有点拍摄…

我会使用“Beyond Compare”这样的工具来比较两台机器上的.Net Framework文件和XML文件(“文件夹比较”configuration文件)。 赞成二进制级别的比较是完全肯定的…如果你的机器都是本地的,它应该是非常快的。

您也可以尝试在两台机器上运行Mark Russinovich的Process Monitor( http://live.sysinternals.com/procmon.exe )并运行文档构build过程。 通过这种方式,您将看到哪些文件正在被读取和参与到帮助文件构build过程中,以及它们来自哪里……您将获得大量输出,因为它将显示系统中发生的所有事情; 您可能希望禁用registry和networking监视,只保留文件监视,并排除与文档构build过程无关的任何过程。

我不是一个帮助生成专家,但我会认为文本来自XML文件,所以你可能想filter只显示XML文件以及。

如果你能识别涉及的文件,那么你可能只需要将它们从一台机器复制到另一台机器。