为什么Sandcastle帮助文件生成器不将Msdn缓存存储在指定的文件夹中?

时间:2009-03-24 08:38:24

标签: msbuild sandcastle

我正在尝试使用Sandcastle帮助文件生成器为我的应用程序构建文档。我将Msdn缓存组件添加到.shfbproj文件中,如下所示:

<ComponentConfigurations>
  <ComponentConfig id="Cached MSDN URL References" enabled="True" xmlns="">
    <component id="Cached MSDN URL References" type="SandcastleBuilder.Components.CachedResolveReferenceLinksComponent" assembly="{@SHFBFolder}SandcastleBuilder.Components.dll" locale="{@Locale}" linkTarget="{@SdkLinkTarget}">
      <cache filename="$(MsdnCachePath)" />
      <targets base="{@SandcastlePath}Data\Reflection" recurse="true" files="*.xml" type="{@SDKLinks}" />
      <targets files="reflection.xml" type="{@ProjectLinks}" />
    </component>
  </ComponentConfig>
</ComponentConfigurations>

$(MsdnCachePath)属性的值为:

<MsdnCachePath>$(MSBuildProjectDirectory)\Cache\MsdnUrl.cache</MsdnCachePath>

问题是在生成帮助文件后,未在此位置创建此缓存文件。任何想法为什么不会发生这种情况?

1 个答案:

答案 0 :(得分:2)

这是因为ComponentConfigurations部分不包含MSBuild执行的MSBuild代码。 ComponentConfigurations是一个包含XML数据的属性,该数据将传递给相关组件并由组件框架解析。这通过使用“SHFB”属性来表示,如

{@ SandcastlePath}

这不是MSBuild属性。因此,常规$(..)属性在此xml中不起作用。