8

问题

我正在构建服务结构应用程序。当我创建一个项目并运行它时,它工作正常。但是当我在 Api 控制器中注入服务时,它给了我这个错误,我试图解决它但还没有成功。

错误

System.BadImageFormatException 无法加载文件或程序集“dotnet-aspnet-codegenerator-design”或其依赖项之一。试图加载格式不正确的程序。

图片

在此处输入图像描述

我添加服务

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
        {
            return new ServiceInstanceListener[]
            {
                new ServiceInstanceListener(serviceContext =>
                    new KestrelCommunicationListener(serviceContext, "ServiceEndpoint", (url, listener) =>
                    {
                        ServiceEventSource.Current.ServiceMessage(serviceContext, $"Starting Kestrel on {url}");

                        return new WebHostBuilder()
                                    .UseKestrel()
                                    .ConfigureServices(
                                        services => services
                                            .AddSingleton<StatelessServiceContext>(serviceContext)
                                            .AddScoped(typeof(ISendMessage), typeof(SendMessage))
                                            )
                                    .UseContentRoot(Directory.GetCurrentDirectory())
                                    .UseStartup<Startup>()
                                    .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None)
                                    .UseUrls(url)
                                    .Build();
                    }))
            };
        }
4

4 回答 4

2

为包添加更多二进制文件,并为平台目标执行 AnyCPU。

<PackageId>Microsoft.VisualStudio.Web.CodeGeneration.Design</PackageId>
 <RuntimeIdentifier Condition=" '$(TargetFramework)' != 'netcoreapp2.0' ">win7-x86</RuntimeIdentifier>
 <RuntimeIdentifier Condition=" '$(TargetFramework)' != 'netcoreapp2.0' ">win7-x64</RuntimeIdentifier>
于 2018-02-25T21:40:58.763 回答
2

这是我们前段时间遇到的一个问题,当您尝试添加 asp.net 核心控制器时会出现此问题。出于某种原因,Visual Studio 添加了对“Microsoft.VisualStudio.Web.CodeGeneration.Design”的引用。

我的建议是删除引用,也不使用 Project->Add->Controller 添加控制器。在此处输入图像描述

只需添加一个基本代码文件并从早期控制器复制内容。 在此处输入图像描述

在此处输入图像描述

于 2018-02-21T21:12:44.943 回答
2

您的服务或其任何依赖项很可能针对x86 平台

要解决这个问题,您必须强制您的服务在x64上运行和/或替换x64的任何x86依赖项。

如果您正在运行 dotnet-core,请确保也安装了 x64 工具。

您也可以尝试Microsoft.VisualStudio.Web.CodeGeneration.Design从您的项目中删除对的引用,如此处所述

这些 SO 问题可能会为您提供更多信息:

服务结构系统损坏图像格式异常

从 aspnet core 1.1 迁移到 2.0 时出现 badimageformatexception

于 2018-02-19T17:53:48.453 回答
1

要修复它,只需按照以下步骤操作:

  • 打开项目属性窗口。
  • 选择构建选项卡
  • 将其更改为“任何 CPU”</li>
  • 保存您的更改。
  • 编译你的项目并运行

    在此处输入图像描述

编辑1:

Service febric targets x64 bit 然后单击 Platform 下拉菜单并选择 New,然后创建 x64 平台配置。

于 2018-02-20T10:10:05.953 回答