【发布时间】:2018-09-16 21:09:29
【问题描述】:
目前我正在 Visual Studio 2017 中使用 C# 构建应用程序。 我需要将目标构建从“AnyPC”更改为“x86”(以便能够调用一些用 C 编写的非托管 dll)。 但是当我只是在配置管理器(或属性)中更改目标构建时->切换到 x86 平台/目标;在此之后我运行应用程序,dotnet 崩溃并出现错误:“dotnet 已停止工作”。
我认为我需要在为 x86 目标编译时以某种方式使用 dotnet-x86,并在为 x64 编译时使用 dotnet(x64),以某种方式添加它们的路径,但我不知道该怎么做。希望大家帮帮我
P.S:我正在使用 .NET core 2.0 开发 Windows 10 x64,VS-2017 社区
我的程序:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Need Help");
Console.ReadKey();
}
}
调试输出:“dotnet.exe”(CoreCLR:DefaultDomain):已加载“C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.6\System.Private.CoreLib.dll”。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。 程序“[7276] dotnet.exe”已退出,代码为 255 (0xff)。
或禁用“仅我的代码”:'dotnet.exe' (CoreCLR: DefaultDomain): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.6\System.Private.CoreLib .dll'。无法找到或打开 PDB 文件。 程序“[1764] dotnet.exe”已退出,代码为 255 (0xff)。
【问题讨论】:
-
您确定在更改构建目标时实际上没有使用这些 C DLL 或任何替代库吗?是否可以用 C# 编写在 32 位平台上中断但在 64 位上工作的代码?如果是这样,也许您已经这样做了,并且 AnyPC 正在使用 64 位而不是使用 32 位代码来伪装自己?
-
是的,我做了一个与这些 dll 无关的项目,无论如何应用程序正在崩溃(dotnet 停止工作)
-
使用调试器时,哪个机器指令导致崩溃? (或者至少它在什么函数中?)或者如果它不是存储到错误地址或除以零或其他什么的 CPU 异常,那么 是什么导致您的 dotnet 运行时停止?你能写一个minimal reproducible example,包括准确的构建说明来重现你的问题吗?
-
我在描述中添加了一些关于我的问题的额外信息,希望这能有所帮助
-
“已停止工作”是一条几乎无用的错误消息。关闭“只是我的代码”以找出真正发生的事情。即使 您 不懂/无法调试汇编语言,将这些信息添加到您的问题中可能会帮助那些可以(并且知道.NET,我不知道>.
标签: c# .net visual-studio x86 target