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) 第二个,请删除项目的bin
和obj
文件夹,然后重试。
您应该使用 msbuild -t:restore,build
来构建您的项目。
3) 第三,尝试从vs_installer
为您的构建工具修复。它将修复相关的 dll。然后删除bin
和obj
文件夹,使用构建工具再次测试你的项目。
重要:
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相关的配置。也许那里出了什么问题。
每当我尝试使用 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) 第二个,请删除项目的bin
和obj
文件夹,然后重试。
您应该使用 msbuild -t:restore,build
来构建您的项目。
3) 第三,尝试从vs_installer
为您的构建工具修复。它将修复相关的 dll。然后删除bin
和obj
文件夹,使用构建工具再次测试你的项目。
重要:
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相关的配置。也许那里出了什么问题。