【问题标题】:How to run a .NET Core app with '<PlatformTarget>x86</PlatformTarget>'如何使用“<PlatformTarget>x86</PlatformTarget>”运行 .NET Core 应用程序
【发布时间】:2021-11-05 17:07:56
【问题描述】:

我在 Visual Studio Code 中设置了一个基本的 C# 控制台应用程序,如下所示:

dotnet new console
dotnet restore

然后我像这样构建:

dotnet build

然后运行:

dotnet run

这一切都按预期工作。如果我将平台目标更改为x86,当我再次构建和运行应用程序时会出现此错误:

未处理的异常:System.BadImageFormatException:无法加载文件或程序集“C:\temp\code\testx86_2\bin\Debug\netcoreapp2.0\testx86_2.dll”。试图加载格式不正确的程序。

我的文件:

程序.cs:

using System;

namespace testx86_2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}

testx86_2.csproj 在设置平台目标之前

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

</Project>

testx86_2.csproj 设置平台目标后

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <PlatformTarget>x86</PlatformTarget>
  </PropertyGroup>

</Project>

版本:

  • Visual Studio 代码:1.13.1
  • 适用于 .NET Core 的 Microsoft (R) Build Engine 版本 15.3.409.57025

【问题讨论】:

  • 有趣。我能够重新创建这个。 x86 是正确的 PlatformTarget 名称(如果您将 x86 换成不匹配的 win-x86 之类的名称,您将获得正确名称的列表)。您是否在 x64 操作系统上运行?另外,您的控制台应用程序是否有解决方案文件? (dotnet new sln --name testx86_2 &amp;&amp; dotnet sln add testx86_2.csproj 将为您设置一个并将您的 csproj 添加到其中)
  • 微软并没有大力推广 32 位代码,它确实已经过时了。这里最基本的错误肯定是您使用了错误的 dotnet.exe,您需要它的 32 位版本。现在下载站点崩溃了,所以我不知道他们是否有可用的,应该有一个适用于 Windows 的。
  • @HansPassant 你是对的 - 使用 32 位二进制文​​件来构建和运行项目有效。如果您愿意,请将其添加为答案。

标签: c# visual-studio-code .net-core


【解决方案1】:

--runtime win-x86 添加到运行命令应强制运行时以 32 位模式启动,即使使用 x64 版本的 dotnet cli。

&lt;PlatformTarget&gt;x86&lt;/PlatformTarget&gt; 不需要,将开关添加到运行命令就足以强制 x86 模式。我会删除 PlatformTarget,让您更轻松地在 x86 / x64 之间切换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多