问题
I am trying to migrate our application to the newer version of .NET Framework. From current version of 4.5 to 4.6.1
Reason, why we are migrating to version 4.6.1 instead of 4.7 or 4.6.2 is, that most of our users and developers do have Windows 10 November update and based on information from .NET Framework System Requirements, .NET Framework 4.6.1 should be preinstalled in this version of Windows by default. This would leave us without any needs for users to download any kind of update.
The problem we are facing is, that every time we run our application following error message is displayed:
This application requires one of the following versions of .NET Framework: .NETFramework,Version=v4.6.1
Do you want to install this .NET Framework version now?
I have also checked what version of .NET Framework is listed in registry following MSDN's article: How to: Determine Which .NET Framework Versions Are Installed
The Registry value is 394806 which should actually be even .NET Framework 4.6.2
Any ideas how to solve this issue and what may cause it? I do not want users to be forced to install the update as it should be part of OS anyway.
回答1:
We recently came across a similar problem. When starting a service, we received the error "This application requires one of the following versions of .NET Framework:"
We discovered the issue was our misunderstanding of how to update the app.config file.
We had changed the app.config file to set
<supportedRuntime version="v4.7" sku=".NETFramework,Version=v4.7" />
But should have set it to
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
We had incorrectly set the major version of .NET as explained in https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/startup/supportedruntime-element#version
回答2:
I had this same error today with SourceTree after applying a new Windows Insider version, with the difference that SourceTree was requiring 4.7.1.
I found that the version
number was correct as 4.0 but, based on @Skyler Nesheim's answer, I changed the other attribute, sku
, from being
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />
to be
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
and that made it work.
回答3:
In case someone else encounters this, I had a similar problem with a windows service that wouldn't start due to an allegedly missing version 4.6 of the .NET framework. In my case, due to copy and paste, the following had happened in the config file:
<supportedRuntime version="v4.0" sku=".NETFramework, Version = v4.6"/>
whereas the following works:
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
So, the spaces are the culprit and must not be there! Why I don't know, because you'd expect the parser to be a little less picky, but ok...
回答4:
How about compiling your application to target the .NET Standard library? This eliminates the need for a specific .NET framework version, but allows any .NET framework installation that implements the specific .NET standard library to run the application.
来源:https://stackoverflow.com/questions/44237105/this-application-requires-one-of-the-following-versions-of-net-framework