程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么 NSwag 在我的计算机上失败,而不是在我同事的同一个 C# 项目上失败?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么 NSwag 在我的计算机上失败,而不是在我同事的同一个 C# 项目上失败??

开发过程中遇到为什么 NSwag 在我的计算机上失败,而不是在我同事的同一个 C# 项目上失败?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么 NSwag 在我的计算机上失败,而不是在我同事的同一个 C# 项目上失败?的解决方法建议,希望对你解决为什么 NSwag 在我的计算机上失败,而不是在我同事的同一个 C# 项目上失败?有所启发或帮助;

我正在处理一个大型 C# Asp.NetCore 3.1 项目,我们使用 Nswag 为我们的 API 生成 swagger.Json 和 C# ProxyClIEnt。 突然间,我无法再为该项目生成任何这些文件,因为 NSwag 失败并显示“无类型服务”,如下所示。

我已尝试将解决方案的新版本 Git 克隆到我机器上的新文件夹,但问题仍然存在。 当我的同事在他们的机器上做同样的事情时,他们没有问题,因此我们得出结论,这与我们的代码无关。

我创建了一个小的 Asp.NetCore 3.1 API 并添加了我们在原始项目中使用的“openAPI.nswag”文件。我没有遇到此解决方案的问题,因此我无法重现该错误。

我已经尝试了所有想到的方法: 将 NSwag 更新到最新版本,重新启动我的计算机,删除 Nswag 并重新安装它,清理注册表中与 Nswag 相关的任何内容,尝试使用 NSwagstudio 创建文件。

我在这里真的没有想法了,所以任何帮助将不胜感激。

.\nswag run ..\..\openAPI.nswag /runtime:NetCore31

NSwag command line tool for .NET Core NetCore31,toolchain v13.7.0.0 (njsonscheR_523_11845@a v10.1.24.0 (Newtonsoft.Json v12.0.0.0))
Visit http://NSwag.org for more information.
NSwag bin directory: C:\source\MyProgram\src\B2B\B2B.API\node_modules\nswag\bin\binarIEs\NetCore31

ExecuTing file '..\..\openAPI.nswag' with variables ''...

system.invalIdoperationException:没有注册类型为“MIcrosoft.Extensions.DependencyInjection.IserviceProvIDerFactorY[autofac.ContainerBuilder]”的服务。 在 Microsoft.Extensions.DependencyInjection.serviceProvIDerserviceExtensions.Getrequiredservice(IserviceProvIDer provIDer,Type serviCETypE) 在 Microsoft.Extensions.DependencyInjection.serviceProvIDerserviceExtensions.Getrequiredservice[T](IserviceProvIDer provIDer) 在 Microsoft.AspNetCore.HosTing.StartupLoader.ConfigureservicesDelegateBuilder.c__displayClass14_0.g__ConfigureservicesWithContainerConfiguration|0(IserviceCollection 服务) 在 Microsoft.AspNetCore.HosTing.ConventionBasedStartup.Configureservices(IserviceCollection 服务) 在 Microsoft.AspNetCore.HosTing.WebHost.Ensureapplicationservices() 在 Microsoft.AspNetCore.HosTing.WebHost.Initialize() 在 Microsoft.AspNetCore.HosTing.WebHostBuilder.build() 在 NSwag.Commands.Generation.openAPIGeneratorCommandBase.CreateWebHostAsync(AssemblyLoader assemblyLoader) 在 C:\projects\nswag\src\NSwag.Commands\Commands\Generation\OpenAPIGeneratorCommandBase.cs:line 342 在 NSwag.Commands.Generation.AspNetCore.AspNetCoretoSwaggerCommand.RunIsolatedAsync(AssemblyLoader assemblyLoader) 在 C:\projects\nswag\src\NSwag.Commands\Commands\Generation\AspNetCore\AspNetCoretoOpenAPICommand.cs:line 310 在 NSwag.Commands.IsolatedCommandBase.IsolatedCommandAssemblyLoader.Run(String commandType,String commandData,String[] assemblyPaths,String[] referencePaths) 在 C:\projects\nswag\src\NSwag.Commands\Commands\IsolatedCommandBase.cs :第 76 行 在 NSwag.Commands.IsolatedCommandBase.c__displayClass17_0.b__0() 在 C:\projects\nswag\src\NSwag.Commands\Commands\IsolatedCommandBase.cs:line 61 在 System.Threading.Tasks.Task.InnerInvoke() 在 System.Threading.Tasks.Task.c.<.cctor>b__274_0(Object obj) 在 System.Threading.ExecutionContext.RunFromThreadPooldispatchLoop(Thread threadPoolThread,ExecutionContext executionContext,ContextCallBACk callBACk,Object statE) --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Threading.ExecutionContext.RunFromThreadPooldispatchLoop(Thread threadPoolThread,Object statE) 在 System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot,Thread threadPoolThread) --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 NSwag.Commands.IsolatedCommandBase.RunIsolatedAsync(String configurationfilE) 在 C:\projects\nswag\src\NSwag.Commands\Commands\IsolatedCommandBase.cs:line 61 在 NSwag.Commands.IsolatedSwaggerOutputCommandBase.RunAsync(CommandlineProcessor 处理器,IConsoleHost 主机) 在 C:\projects\nswag\src\NSwag.Commands\Commands\IsolatedSwaggerOutputCommandBase.cs:line 51 在 NSwag.Commands.Generation.AspNetCore.AspNetCoretoSwaggerCommand.RunAsync(CommandlineProcessor 处理器,IConsoleHost 主机)在 C:\projects\nswag\src\NSwag.Commands\Commands\Generation\AspNetCore\AspNetCoretoOpenAPICommand.cs:line 95 在 NSwag.Commands.NSwagdocumentBase.GenerateSwaggerdocumentAsync() 在 C:\projects\nswag\src\NSwag.Commands\NSwagdocumentBase.cs:line 280 在 C:\projects\nswag\src\NSwag.Commands\NSwagdocument.cs:line 81 中的 NSwag.Commands.NSwagdocument.ExecuteAsync() 在 NSwag.Commands.document.ExecutedocumentCommand.ExecutedocumentAsync(IConsoleHost host,String filePath) 在 C:\projects\nswag\src\NSwag.Commands\Commands\document\ExecutedocumentCommand.cs:line 86 在 NSwag.Commands.document.ExecutedocumentCommand.RunAsync(CommandlineProcessor 处理器,IConsoleHost 主机)在 C:\projects\nswag\src\NSwag.Commands\Commands\document\ExecutedocumentCommand.cs:line 32 在 NConsole.CommandlineProcessor.ProcessSingleAsync(String[] args,Object input) 在 NConsole.CommandlineProcessor.ProcessAsync(String[] args,Object input) 在 NConsole.CommandlineProcessor.Process(String[] args,Object input) 在 C:\projects\nswag\src\NSwag.Commands\NSwagCommandProcessor.cs:line 56child_process.Js:669 中的 NSwag.Commands.NSwagCommandProcessor.Process(String[] args) 抛出错误;

解决方法

最后克隆NSwag并调试后,发现问题

NSwag 正在寻找要为其创建代理客户端的程序集中的 program 类。它通过反思来做到这一点,然后 NSwag 调用它。 幸运的是,如果 program 抛出一个异常,它会被 NSwag 抑制,然后它会运行一个“后备程序”,在那里它通过使用程序集中的 startup 类来创建 Webhost 本身.这样做时,Webhost 不是使用 AutofacserviceProviderFactory 作为 serviceProviderFactory 创建的,因此抛出上面的异常而不是初始异常。

就我而言,问题是未设置 ASPNETCORE_ENVIRONMENT 环境变量,因此它不会读取正确的设置。 我的同事在全局设置了这个环境变量,但我没有。 原来这个设置可以设置为.nswag配置的一部分

为什么 NSwag 在我的计算机上失败,而不是在我同事的同一个 C# 项目上失败?

大佬总结

以上是大佬教程为你收集整理的为什么 NSwag 在我的计算机上失败,而不是在我同事的同一个 C# 项目上失败?全部内容,希望文章能够帮你解决为什么 NSwag 在我的计算机上失败,而不是在我同事的同一个 C# 项目上失败?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:为什么