Documentation 我如何才能找到什么';是什么导致生成的Sandcastle文档存在差异?

Documentation 我如何才能找到什么';是什么导致生成的Sandcastle文档存在差异?,documentation,sandcastle,finalize,shfb,Documentation,Sandcastle,Finalize,Shfb,在野田佳彦,我们使用Sandcastle和生成文档。然后,我们将文档提交回源存储库——主要是因为这样可以方便地查看最新(和历史)文档 我是该项目的主要开发人员,但我使用两台计算机——不幸的是,目前它们正在构建不同的文档,尽管它们都更新到了相同的源 这两台计算机在我能想到的所有重要方面都是一样的: 沙堡2.7.2.0 SHFB 1.9.6.0 VS 2012 Professional(在“程序”中报告了11.0.50727.1版,在“关于”页面中报告了11.0.51106.01版更新1版) .N

在野田佳彦,我们使用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本地帮助内容的最新版本(其他Framework版本没有本地帮助内容)
为确保构建干净而采取的步骤:

  • 删除了SHFB缓存文件夹(
    C:\Users\Jon\AppData\Local\EWSoftware\Sandcastle-Help-File-Builder\cache
  • 已删除生成文档的文件夹
  • 已删除与SHFB项目文件相关的用户设置文件
  • 已删除Visual Studio中的符号缓存
但分歧依然存在。它们似乎仅限于从MSDN本身继承的文档,尤其是

版本1(在机器“Chubby”上生成):

允许对象尝试释放资源并执行
垃圾回收回收之前的其他清理操作。
版本2(在机器“Sandy”上生成):

允许尝试释放资源并执行其他清理操作
在垃圾回收回收之前。
两者都链接到相同的MSDN文档,看起来像版本1(没有链接到
对象

查看一些更改的文件,更改是一致的,并且仅限于此成员

Sandcastle从何处获取此文档,如何使两台计算机的行为相同

编辑:另一个信息片段-在两台机器上清理缓存并重建文档后,SHFB缓存目录中有三个文件:

  • Reflection.cache在两台计算机上的大小相同
  • MsdnUrl.cache在两台计算机上的大小相同
  • .NETFramework_4.0.0319_E8879A28.cache在Chubby上的大小为133777733字节,在Sandy上的大小为13337949字节
编辑:重大进展!我已经发现差异可能来自哪里

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

  • Chubby上的是8005263字节,日期为2011年12月12日,并且具有用于
    Finalize
  • Sandy上的文本为9740370字节,日期为2009年8月31日,文本为
    Finalize
    ,其中包含链接
在这两台机器上,
mscorlib.dll
本身大小相同(4550656字节),修改日期为2012年9月13日

但是我怎样才能让它们保持一致呢?这种差异从何而来?(服务包?)


编辑:好的,
c:\Windows
中的版本是一个令人费解的问题-应该归咎于
c:\ProgramFiles(x86)\Reference Assembly\Microsoft\Framework
中的版本。我将看看我是否能找出安装之间可能存在差异的原因…

考虑到您最近的编辑,我有几个想法,尽管我同意这有点像在黑暗中拍摄

我将使用类似“Beyond Compare”的工具来比较两台机器上的.Net Framework文件和XML文件(“文件夹比较”配置文件)。 支持二进制级别的比较,以完全确定。。。如果您的两台机器都是本地的,那么速度应该非常快

您还可以尝试在这两台机器上运行Mark Russinovich的Process Monitor(),并运行文档构建过程。 通过这种方式,您将看到在帮助文件构建过程中从哪些文件读取并涉及哪些文件,以及这些文件的来源。。。 您将获得大量输出,因为它将显示系统中发生的一切;您可能希望禁用注册表和网络监视,只保留文件监视,并排除与文档生成过程无关的任何进程

我不是帮助生成专家,但我认为文本来自XML文件,因此您可能希望在仅显示XML文件时设置过滤器


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

您确定SC可执行文件路径中没有其他版本吗?嗯,是否有一个Unix“which”命令可用于Windows,也许。@larsw:每台计算机上只有一个sandcastlehlefilebuilder.targets文件:(差异可能是由于一台计算机上安装了任何Windows system/.NET update/修补程序,而另一台计算机上没有安装这些修补程序造成的吗?您是否以相同的方式在这两台计算机上安装了所有现有的.NET framework版本?@stakx:这两台计算机是“最近”安装的(2012年底)这两个版本都是Windows Update的最新版本…但这并不完全相同,当然…@larsw您可以使用Windows cmd行中的
where
来查找(默认情况下)可检查项位于
路径
env变量上。我现在找到了涉及的文件-肯定是引用程序集。我通过删除继承的文档得到了一个临时修复,但我也想知道为什么会存在这些差异。是否有不同程序集的版本号?如果查找版本号s正在使用google站点:support.microsoft.com您是否发现任何KB提到了它们?可能是Windows更新周期之外发布的修补程序以某种方式降落在您的一台计算机上(另一个安装了修补程序的应用程序)
<div class="summary">Allows an object to try to free resources and perform
other cleanup operations before it is reclaimed by garbage collection.</div>
<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>