docfx 元数据步骤失败并出现错误 "Could not load SDK Resolver"

docfx metadata step fails with error "Could not load SDK Resolver"

每当我尝试使用 docfx 构建任何文档时,我都会在使用 msbuild 分析 csprojs 代码中的 xml 注释的 metadata 构建步骤中收到以下错误:

Warning:MetadataCommand.ExtractMetadataWorkspace failed with: [Failure] Msbuild failed when processing the file 'C:\temp\docfxtest\docfx_project\src\src.csproj' with message: Could not load SDK Resolver. A manifest file exists, but the path to the SDK Resolver DLL file could not be found. Manifest file path 'C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\Bin\SdkResolvers\Microsoft.Build.NuGetSdkResolver\Microsoft.Build.NuGetSdkResolver.xml'. SDK resolver path: C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\Common7\IDE\CommonExtensions\Microsoft\NuGet\Microsoft.Build.NuGetSdkResolver.dll C:\temp\docfxtest\docfx_project\src\src.csproj

msbuild似乎无法被docfx正确解析。知道我该如何解决这个问题吗?

我在 Windows 上使用 docfx 版本 2.56.5.0,我还安装了 VS Enterprise 2019 (16.8.2) 和 VS Build Tools 2017 (15.9.29):

更新:

我现在已经完全卸载了 VS 2017 构建工具,并使用安装程序修复了 VS 2019 安装。我现在在 运行 docfx 时遇到不同的错误。好像完全找不到msbuild

Warning:MetadataCommand.ExtractMetadataWorkspace failed with: [Failure] Msbuild failed when processing the file 'C:\temp\docfxtest\docfx_project\src\src.csproj' with message: The SDK 'Microsoft.NET.Sdk' specified could not be found. C:\temp\docfxtest\docfx_project\src\src.csproj

运行 msbuild -t:restore,build也显示找不到msbuild

'msbuild' is not recognized as an internal or external command

目标已安装:

.NET Core 工作负载也是如此:

您的 VS2017 构建工具 可能由于某些问题而出现一些问题。最多的问题是:

C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\Common7\IDE\CommonExtensions\Microsoft\NuGet\Microsoft.Build.NuGetSdkResolver.dll

要么是你丢失了dll,要么是dll损坏了。

更新

1) 首先,你应该检查你是否安装了NuGet targets and build tasks工作负载和net core build tools工作负载。如果没有,请安装。

2) 第二个,请删除项目的binobj文件夹,然后重试。

您应该使用 msbuild -t:restore,build 来构建您的项目。

3) 第三,尝试从vs_installer 为您的构建工具修复。它将修复相关的 dll。然后删除binobj文件夹,使用构建工具再次测试你的项目。

重要:

VS2017不支持net core 3.1。你应该注意这一点。它支持 <=net core 2.1.

所以如果你仍然想使用VS2017的Build Tool作为你的net core项目,你应该尝试上面的三个步骤,然后将你的项目定位到net core 2.1.

此外,如果你通过CMD启动msbuild,我认为你应该检查你的环境变量PATH 并检查是否配置了VS2017Build Tool中的msbuild.exe相反,您可以添加 C:\Program Files (x86)\Microsoft Visual Studio19\Enterprise\MSBuild\Current\Bin\MSBuild.exe。这种方式适用于VS2019。

============================================= ====

更新 1

问题是您已经通过 choco command line 安装了 docfx tool

一开始,我一直以为你在你的项目中使用了docfx.console nuget包,只是在C:\Users\xxx\.nuget\packages\docfx.console.56.5\tools\docfx.exe下调用了docfx.exe命令行。

不管 在你的项目上安装了 docfx.console 包,如果你通过 choco 命令安装了 docfx 工具,然后在命令行上调用 docfx.exe , 它使用 C:\ProgramData\chocolatey\lib\docfx\tools\docfx.exe 下的本地 docfx.exe 而不是 nuget 包。

所以 问题是您的本地 docfx.exe 由于某些问题而出现一些错误。您应该通过 choco 命令 choco uninstall docfx; choco install docfx.

重新安装 docfx.exe

实际上,直接在您的项目中使用 docfx.console nuget 包可能更容易。来自这个link.

它已经包含 docfx.exe(来自 C:\Users\xxx\.nuget\packages\docfx.console.56.5\tools\docfx.exe)的文档生成步骤,并且将自动执行它而不是 运行 docfx.exe 再次手动执行。

我已经使用 chocolatey (choco uninstall docfx) 完全卸载了 docfx,从 c:\ProgramData\chocolatey\.chocolatey\ 中删除了所有名为 docfx 的文件夹,然后重新安装了它 (choco install docfx)。在那之后,一切又恢复正常了。文件c:\ProgramData\chocolatey\lib\docfx\tools\docfx.exe.config 包含了很多msbuild相关的配置。也许那里出了什么问题。