C# 程序执行时检测并安装framework 4.5
我有目标为.net 4.5的VS2013 EE WinForms应用程序。 当我尝试在未安装4.5 framework的Win7下执行我的应用程序时,会出现异常窗口(0xc000007b)。 我应该在我的应用程序设置中设置什么以显示具有下载框架选项的良好信息窗口?C# 程序执行时检测并安装framework 4.5,c#,.net,frameworks,C#,.net,Frameworks,我有目标为.net 4.5的VS2013 EE WinForms应用程序。 当我尝试在未安装4.5 framework的Win7下执行我的应用程序时,会出现异常窗口(0xc000007b)。 我应该在我的应用程序设置中设置什么以显示具有下载框架选项的良好信息窗口? 我不想发布安装文件,只想使用带有dll-s的exe,所以发布不是我的目标。您可以在注册表中检查安装了哪个框架?如果VS版本低于4.5,则提供一个消息窗口以下载该版本 您可以轻松找到如何检查已安装的VS版本 以下是链接请尝试: 参考m
我不想发布安装文件,只想使用带有dll-s的exe,所以发布不是我的目标。您可以在注册表中检查安装了哪个框架?如果VS版本低于4.5,则提供一个消息窗口以下载该版本 您可以轻松找到如何检查已安装的VS版本 以下是链接请尝试: 参考msdn
kind问候他的应用程序在没有框架的情况下无法启动,所以您认为应用程序将如何检查某些内容?是的,我给了使用另一个应用程序签入注册表的相同选项。你可以做的是编写另一个具有较低版本framework的应用程序,以检查是否安装了4.5版本,并在一切正常的情况下启动主应用程序。此外,Reniuz还说:你可以将4.5应用程序打包到2.0/4.0应用程序中,这样你就可以始终只部署一个可执行文件。
private static void Get45or451FromRegistry()
{
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\")) {
int releaseKey = Convert.ToInt32(ndpKey.GetValue("Release"));
if (true) {
Console.WriteLine("Version: " + CheckFor45DotVersion(releaseKey));
}
}
}
// Checking the version using >= will enable forward compatibility,
// however you should always compile your code on newer versions of
// the framework to ensure your app works the same.
private static string CheckFor45DotVersion(int releaseKey){
if ((releaseKey >= 379893)) {
return "4.5.2 or later";
}
if ((releaseKey >= 379675)) {
return "4.5.1 or later";
}
if ((releaseKey >= 378389)) {
return "4.5 or later";
}
// This line should never execute. A non-null release key should mean
// that 4.5 or later is installed.
return "No 4.5 or later version detected";
}