在 Noda Time 中,我们使用 Sandcastle 和SHFB生成我们的文档。然后,我们将文档提交回源存储库 - 主要是因为这样可以轻松查看最新(和历史)文档。
我是该项目的主要开发人员,但我使用两台计算机 - 不幸的是,目前他们正在构建不同的文档,即使它们都更新到相同的源。
这两台计算机在我能想到的所有重要方面都是相同的:
- 沙堡 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 本地帮助内容的最新版本(其他框架版本没有本地帮助内容)
为确保构建干净而采取的步骤:
- 删除了 SHFB 缓存文件夹 (
C:\Users\Jon\AppData\Local\EWSoftware\Sandcastle Help File Builder\Cache
) - 删除了生成文档的文件夹
- 删除了与 SHFB 工程文件相关的用户设置文件
- 删除了 Visual Studio 中的符号缓存
仍然存在差异。它们似乎仅限于从 MSDN 本身继承的文档,尤其是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 可能从哪里获得此文档,我怎样才能让两台计算机以相同的方式运行?
编辑:还有一个信息片段 - 在两台机器上清理缓存并重建文档后,SHFB 缓存目录中有三个文件:
- 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 上是 8,005,263 字节,日期为 2011 年 12 月 12 日,非链接文本为
Finalize
- 在 Sandy 上是 9,740,370 字节,日期为 2009 年 8 月 31 日,
Finalize
其中包含链接的文本
在两台机器上,mscorlib.dll
其本身大小相同(4,550,656 字节),修改日期为 2012 年 9 月 13 日。
但是我怎样才能让它们相同呢?这种差异从何而来?(服务包?)
编辑:好的,版本c:\Windows
是红鲱鱼 - 这是c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework
应该受到指责的版本。我要看看我是否能找出为什么安装之间可能会有所不同......