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

Msbuild 为什么Sandcastle帮助文件生成器不将Msdn缓存存储在指定的文件夹中?,msbuild,sandcastle,Msbuild,Sandcastle,我正在尝试使用Sandcastle帮助文件生成器为我的应用程序构建文档。我将Msdn缓存组件添加到.shfbproj文件中,如下所示: <ComponentConfigurations> <ComponentConfig id="Cached MSDN URL References" enabled="True" xmlns=""> <component id="Cached MSDN URL References" type="SandcastleBu

我正在尝试使用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>
$(MSBuildProjectDirectory)\Cache\MsdnUrl.Cache

问题是,在生成帮助文件后,没有在此位置创建此缓存文件。知道为什么不会发生这种情况吗?

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

{@SandcastlePath}

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