我们有一个包含测试引擎的SDK项目。它们生活在两个不同的csproj之下。因此,我们有SDK.csproj
和TestEngine.csproj
,其中SDK.csproj
是ProjectReference
。
我有一个DocFx项目,该项目分别为这两个项目构建元数据,而docfx.json元数据看起来像这样:
{
"src": [
{
"src": "../../sdk",
"files": ["csharp/SDK/**/*.cs"]
}],
"dest": "reference/SDK"
},
{
"src": [
{
"src": "../../sdk",
"files": ["csharp/TestEngine/**/*.cs"]
}],
"dest": "reference/TestEngine"
}
这样我可以设置目录以将这些文档树放在单独的选项卡下。
但是,我不能在cref
xml文档中使用TestEngine
来引用SDK
中的类。我从DocFX构建中收到这样的错误:Warning:[MetadataCommand.ExtractMetadata]Invalid cref value "!:SDK.SDKClass" found in triple-slash-comments for TestEngineClass, ignored.
我可以想象为什么会失败-DocFX仅为TestEngine
生成元数据,因此它不了解SDK
类或如何链接到它们。有没有一种方法可以更改配置,以便可以在最终网站中将这两个项目保持独立(在单独的目录下),但仍可以从TestEngine
链接到SDK
类?
我意识到,使用@
中所述的xref
和/或DocFx documentation标签确实可以正确解析所生成网页中的链接。这样我就可以得到很多想要的东西。但是,这不是一个完整的解决方案,因为其他生成的引用无法解析为链接。例如,如果TestEngine
方法的参数类型为SDK.SDKClass
,则生成的文档不会在参数文档中出现的SDKClass
链接。所以我仍然想知道是否还有另一种解决方案。