我正在尝试使用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>
问题是在生成帮助文件后,未在此位置创建此缓存文件。任何想法为什么不会发生这种情况?
答案 0 :(得分:2)
这是因为ComponentConfigurations部分不包含MSBuild执行的MSBuild代码。 ComponentConfigurations是一个包含XML数据的属性,该数据将传递给相关组件并由组件框架解析。这通过使用“SHFB”属性来表示,如
{@ SandcastlePath}
这不是MSBuild属性。因此,常规$(..)属性在此xml中不起作用。