![](/img/trans.png)
[英]Is it possible to run .NET Framework WPF application with .NET 7? (Windows 10)
[英]WPF application, built on Windows 10, will not run on Windows 7 (.NET Framework 4.5) [on hold]
我已经创建了一个针对.NET 4.5的WPF应用程序。 我的开发环境是Win 10上的Visual Studio 2019。
完整的应用程序可以在Windows 10上正常运行,但不能在Windows 7上正常运行。
我正在使用的Windows 7计算机已安装.NET 4.5。 我还使用.NET 4.8尝试了全部操作,但是那也失败了。 它因通用的“ Windows正在尝试解决问题-结束任务 ”消息而崩溃。
我需要对WPF项目做些什么以确保它在Windows 7上运行? 我尝试了各种.NET版本,x64和x86构建以及“任何CPU”。 我不确定我应该寻找什么细节。
我唯一能想到的是,该项目利用了仅在Windows 10中存在的API,但我不知道如何/在何处进行检查。
输入/经验非常感谢,谢谢。
刚注意到崩溃提供了以下错误消息(我在中国,所以这是Google翻译的):
///Question signature:
///Problem Event Name: CLR20r3
///Problem Signature 01: echinacarers tefl.exe
///Problem Signature 02: 1.0.0.0
///Problem Signature 03: c60d63f4
///Problem Signature 04: mscorlib
///Problem Signature 05: 4.0.30319.17929
///Problem Signature 06: 4ffa57ca
///Problem Signature 07: 2e91
///Problem Signature 08: 78
///Problem Signature 09: KUTS43RW3WMPE3EWT1R1Z5M5MTM1NR04
///OS version: 6.1.7601.2.1.0.256.1
///Locale ID: 2052
///Other information 1: 9b1d
///Other information 2: 9b1d1a091b7e1696235b9fb28c3ca91a
///Additional information 3: 294f
///Additional information 4: 294f8f1de900b664c678f90b36a33101
///
///Read the privacy statement online:
///http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804
根据评论的要求:
该应用程序需要120小时的TEFL课程。 它具有以下特点:
最后一个因素可能是导致问题的原因。
我刚刚尝试在另一台Win7机器上运行它,并且错误消息现在包含以下讲述故事的行:
/// ..
///Problem Signature 04: SQLite-net
///Problem Signature 05: 1.6.292.0
///Problem Signature 06: 9a4f918c
///Problem Signature 07: 23
///Problem Signature 08: 0
///Problem Signature 09: SQLite.SQLiteException
///.....
注意那里的第一行和最后一行。
但是,我尝试将项目的SQLite NuGet软件包降级为较不高级的版本,现在回到第一个。 没有特定的SQLite
错误消息。 它只是在问题签名列表中显示mscorlib
。
我怀疑Nuget软件包可能是问题的根源。 我认为将需要反复试验。
(注意-该项目没有任何其他nuget包-只有SQLite所需的那些)
在App.cs
添加一个额外的exceptionHandling
。 之后,我们可能会收到有意义的错误消息。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
SetupExceptionHandling();
}
private void SetupExceptionHandling()
{
AppDomain.CurrentDomain.UnhandledException += (s, e) => LogUnhandledException((Exception)e.ExceptionObject, "AppDomain.CurrentDomain.UnhandledException");
DispatcherUnhandledException += (s, e) => LogUnhandledException(e.Exception, "Application.Current.DispatcherUnhandledException");
TaskScheduler.UnobservedTaskException += (s, e) => LogUnhandledException(e.Exception, "TaskScheduler.UnobservedTaskException");
}
private void LogUnhandledException(Exception exception, string source)
{
string message = $"Unhandled exception ({source})";
try
{
AssemblyName assemblyName = Assembly.GetExecutingAssembly().GetName();
message = $"Unhandled exception in {assemblyName.Name} v{assemblyName.Version} ({source})";
}
catch (Exception ex)
{
_Logger.Fatal(ex, "Exception in LogUnhandledException");
}
finally
{
_Logger.Fatal(exception, message);
MessageBox.Show($"That should not have happened. An unexpected error occurred. Please contact the Support. \n {exception.Message} \n {exception.StackTrace}", "Fatal Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.