Azure DevOps:如何在没有 devops 主菜单的情况下在自己的应用程序中显示 wiki 页面?

Azure DevOps: How to show wiki pages in own application without the devops main menu?

我想展示我在带有浏览器控件的 WPF 视图中为我的项目创建的 Azure DevOps Wiki。我使用了以下 url:

https://dev.azure.com/xxx/xxx/_wiki/wikis/KIS.wiki?wikiVersion=GBwikiMaster&pagePath=%2FNew%20Features&pageId=1

是否可以仅显示 Wiki,而不在左侧显示 DevOps 主菜单(概述、摘要、仪表板、Wiki、回购、管道等)?

鉴于 wiki 实际上是 markdown,您可以随时下载源代码并使用 markdown 查看器。例如。 VsCode 降价预览。

Is it possible to show only the Wiki, without the DevOps main menu on the left side (Overview, Summary, Dashboards, Wiki, Repos, Pipelines, etc.)

从这个link可以看出,这是代表整个页面的link,包含左侧面板和右侧显示的内容。如果您想将此 link 用作 WPF 视图的一部分,它可能不会仅在 wiki 中显示。

但是有一个解决方法,因为 WPF 支持 Markdown 语言,您可以使用下面的 api 来获取它的 markdown 脚本:

https://dev.azure.com/{org name}/{project name}/_apis/wiki/wikis/{wiki name}/pages/%2F10

然后,将这些用于您的 WPF 脚本。

更新:

要使用此 API,您需要先将凭据传递给脚本。要提供凭据,您可以 link 一个用 C# 编写的 .cs 文件。

在此 .cs 文件中,使用以下 C# 脚本与您的组织建立连接:

var url = new Uri("https://dev.azure.com//{org}");
VssCredentials cre = new VssCredentials(new Microsoft.VisualStudio.Services.Common.VssBasicCredential(string.Empty, "{PAT token}"));
var connection = new VssConnection(url, cre);
var workitemClient = connection.GetClient<xxxxHttpClient>();

只是想分享我们最终为 WPF "WikiView" 用户控件完成的内容:

  • 我们使用 WikiHttpClient 的 GetPageAsync() 获取所有页面的内容 (page.Page.Content) 并使用 page.Page.GitItemPath[=20= 中的路径名将 markdown (*.md) 文件保存在本地]
  • 我们使用 GitHttpClient 从 wiki 存储库中的 "attachments" 文件夹中获取所有图像
  • Markdig 将 markdown 转换为 html(并手动将绝对 link 地址固定为相对地址)
  • wiki 页面的列表框(table 的内容)
  • 一个 CefSharp 浏览器控件来显示 html(WPF BrowserControl 显示的图像太小)

我会提供一些代码,以备不时之需。