当前位置: 首页 > 知识库问答 >
问题:

docfx 元数据步骤失败,出现错误“无法加载 SDK 解析程序”

曹华荣
2023-03-14

每当我尝试使用docfx构建任何留档时,我都会在元数据构建步骤中收到以下错误,该步骤使用msBuild来分析cspros代码中的xml注释:

警告:Metadata命令。ExtractMetadataWorkspace失败,原因是:[失败]处理文件“C:\temp\docfxtest\docfx_project\src\src.csproj”时MsBuild失败,并带有消息:无法加载SDK解析器。存在清单文件,但找不到SDK解析器DLL文件的路径。清单文件路径“C:\节目文件(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\SdkResolver\Microsoft. Build. NuGetSdkResolver\Microsoft.Build.NuGetSdkResolver.html" target="_blank">xml”。SDK解析器路径:C:\节目文件(x86)\Microsoft Visual Studio\2017\BuildTools\公共扩展\Microsoft\NuGet\Microsoft.Build.NuGetSdkResolver.dllC:\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):

更新:

我现在已经完全卸载了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

运行< code>msbuild -t:restore,build也显示它找不到msbuild

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

目标不是:

.NET核心工作负载也是如此:

共有2个答案

欧阳子石
2023-03-14

我已经使用chocolatey完全卸载了docfx(<code>choco uninstall docfx</code>),从<code>c:\ProgramData\chocolatey\中删除了名为<code>docfx的每个文件夹。chocolatey\,然后重新安装(choco安装docfx)。之后,一切都恢复正常。文件<code>c:\ProgramData\chocolatey\lib\docfx\tools\docfx.exe。config包含大量与msbuild相关的配置。也许那里出了什么事。

卜季萌
2023-03-14

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

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

您丢失了 dll 或 dll 已损坏。

更新

1)首先,您应该检查是否安装了< code > nu get targets and build tasks 工作负载和< code>net core build tools工作负载。如果没有,请安装它。

2)其次,请删除项目的binobj文件夹,然后重试。

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

3)第三,尝试从< code>vs_installer修复您的构建工具。它将修复相关的dll。然后删除< code>bin和< code>obj文件夹,使用构建工具再次html" target="_blank">测试您的项目。

重要:

VS2017不支持net core 3.1。你应该注意。它支持

因此,如果您仍然想将VS2017的构建工具用于您的净核心项目,您应该尝试上述三个步骤,然后将您的项目定位到净核心2.1

此外,如果您通过CMD启动msBuild,我认为您应该检查您的环境变量PATH,并检查您是否在其上配置了VS2017构建工具中的msbuild.exe。相反,您可以添加C:\节目文件(x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\当前\MSBuild.exe。这种方式适用于VS2019。

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

更新1

问题是你已经通过choco命令行安装了一个< code>docfx tool。

一开始我一直以为你在项目上用的是docfx.console nuget包,只是从< code>C:\Users\xxx\中调用< code>docfx.exe。命令行下的nu get \ packages \ docfx . console \ 2 . 56 . 5 \ tools \ docfx . exe 。

无论在项目上安装了< code>docfx.console软件包,如果您通过choco命令安装了docfx工具,然后只在命令行上调用< code>docfx.exe,它将使用< code > C:\ program data \ chocolatey \ lib \ docfx \ tools \ docfx . exe 下的本地< code>docfx.exe而不是nuget软件包。

所以问题是您的本地docfx.exe由于一些问题而出现了一些错误。您应该通过choco命令choco卸载docfx重新安装docfx.exe;choco安装docfx

实际上,直接使用docfx。项目上的控制台nuget包可能更容易。从这个链接。

它已经包含了< code>docfx.exe生成文档的步骤(来自< code>C:\Users\xxx\)。nu get \ packages \ docfx . console \ 2 . 56 . 5 \ tools \ docfx . exe )并将自动执行它,而不是再次手动运行< code>docfx.exe。

 类似资料:
  • 我试图实现一个单页应用程序的角度。为了使我的工作流更好,我尝试实现了Gulp。 我在安装gulp插件时遇到了一些严重的npm错误,但这是另外一个故事,我意识到,无论有没有错误,它都是工作的。 我真正碰到的是useref插件。或者更确切地说,丑陋的插件。 我想这可能是gulp做的异步工作造成的。可能是uglify插件试图丑化此时此刻未完成的useref文件。怎么知道? 所以我把所有的东西都分开了,以

  • 我想使用Eclipse Indigo运行maven项目,但当我运行项目Run As- 我对此进行了研究,后来意识到slf4j依赖也缺失了。我下载了slf4j-1.7.5.zip并将以下文件提取到C:\Program files\Java\jdk1.7.0\u 17\lib中: slf4j-simple-1.7.5.jarslf4j-api-1.7.5.jarlog4j-over-slf4j-1.7

  • 我正在进行一个项目,该项目重用https://github.com/vdenotaris/spring-boot-security-saml-sample以IDP身份与Azure AD集成。 整合进行得相当顺利。我唯一不能修复的是元数据信任检查。 根据 https://docs.spring.io/autorepo/docs/spring-security-saml/1.0.x/reference

  • 我正在用TypeScript编写一个Express应用程序,并尝试使用webpack将生产代码和供应商模块转换到单个bundle.js文件中。但我不能这样做,因为一个奇怪的节点前GYP错误: 我正在运行节点8.11.2。下面是我的: 知道吗?提前谢谢你。

  • 我们在CDH 5.3.2上建立了一个使用Hadoop、Hive和Impala构建的报告应用程序。我们所有的作业都是从一个节点(称为业务流程节点)调度的。此节点上没有部署Hadoop服务。然而,由于这是整个应用程序的潜在单点故障,我们通过添加另一个被动编排节点并使用rcron(保持活力)来保持主动被动同步,从而为其引入了高可用性。 然而,由于实现中的一些缺陷,出现了两个节点都出现的场景。在此期间,有

  • 问题内容: 我正在尝试使用Firebase REST API将内容保存到我的数据存储中。我尝试使用jQuery和香草JS XHR。但是,两者都给出相同的错误。403错误请求和此响应: 无效数据; 无法解析JSON对象,数组或值。也许您在密钥名称中使用了无效字符。 这是我的示例JSON,我正在尝试保存: 这是示例ajax请求: 要求的回应: 如您所见,没有特殊字符或任何特殊字符。它应该工作。 它与C