1

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

警告:MetadataCommand.ExtractMetadataWorkspace 失败:[失败] Msbuild 在处理文件“C:\temp\docfxtest\docfx_project\src\src.csproj”时失败,并显示消息:无法加载 SDK 解析器。存在清单文件,但找不到 SDK Resolver DLL 文件的路径。清单文件路径“C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\SdkResolvers\Microsoft.Build.NuGetSdkResolver\Microsoft.Build.NuGetSdkResolver.xml”。SDK 解析器路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\CommonExtensions\Microsoft\NuGet\Microsoft.Build.NuGetSdkResolver.dll C:\temp\docfxtest\docfx_project\src\src .csproj

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

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

Visual Studio 安装程序

更新:

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

警告:MetadataCommand.ExtractMetadataWorkspace 失败:[失败] Msbuild 在处理文件“C:\temp\docfxtest\docfx_project\src\src.csproj”时失败,消息为:找不到指定的 SDK 'Microsoft.NET.Sdk' . C:\temp\docfxtest\docfx_project\src\src.csproj

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

'msbuild' 未被识别为内部或外部命令

目标已安装:

在此处输入图像描述

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

在此处输入图像描述

4

2 回答 2

2

由于某些问题,您的 VS2017 构建工具可能会出现一些问题。最大的问题是这样的:

C:\Program Files (x86)\Microsoft Visual Studio\2017\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。然后删除binobj文件夹,使用构建工具再次测试您的项目。

重要

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

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

另外,如果你从CMDmsbuild开始,我认为你应该检查你的环境变量PATH并检查你是否在上面配置了VS2017的from Build Tool 。相反,您可以添加. 这种方式适用于VS2019。msbuild.exeC:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe

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

更新 1

问题是你已经安装了一个docfx toolby choco command line

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

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

所以问题是docfx.exe由于某些问题,您的本地有一些错误。您应该重新安装docfx.exeby choco 命令choco uninstall docfx; choco install docfx

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

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

于 2020-11-30T06:13:35.730 回答
1

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

于 2020-11-30T07:56:08.033 回答