【发布时间】: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 && dotnet sln add testx86_2.csproj将为您设置一个并将您的 csproj 添加到其中) -
微软并没有大力推广 32 位代码,它确实已经过时了。这里最基本的错误肯定是您使用了错误的 dotnet.exe,您需要它的 32 位版本。现在下载站点崩溃了,所以我不知道他们是否有可用的,应该有一个适用于 Windows 的。
-
@HansPassant 你是对的 - 使用 32 位二进制文件来构建和运行项目有效。如果您愿意,请将其添加为答案。
标签: c# visual-studio-code .net-core