“This assembly is built by a runtime newer than th

2019-01-25 01:54发布

问题:

I'm getting the error: "This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded."

I have a .NET 4.0 dll project that is being called by a .NET 2.0 project. Is there a way to reconcile the difference in framework?

回答1:

I have a .NET 4.0 dll project that is being called by a .NET 2.0 project. Is there a way to reconcile the difference in framework?

Not that way round, no. The .NET 4 CLR can load .NET 2 assemblies (usually - there are a few exceptions for mixed-mode assemblies, IIRC), but not vice versa.

You'll either have to upgrade the .NET 2 project to .NET 4, or downgrade the .NET 4 project to .NET 3.5 (or earlier).



回答2:

I got same error message. I was giving

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe "C:\MyService\MyService.exe"

Instead of

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "C:\MyService\MyService.exe"



回答3:

If you have already tried all the other logical solutions on this page, then double check this. In my app.config I had a reference to an old framework.

<startup>
  <supportedRuntime version="v2.0.50727"/>
</startup>

should have been

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

The project tab correctly showed v4.0 but the app.config was not committed to our repo with that change. To fix it, I changed the framework to something else and back to 4.0 again, which updated my app.config file.



回答4:

Since only one version of the run-time can be loaded into a process (although, as others have alluded, backwards loading - 4.0 loading 2.0 - is okay), you have a few options:

  • Upgrade the .Net 2.0 project
  • Wrap the .Net 2.0 project (if the source is not yours)
  • Downgrade the .Net 4.0 project
  • Load the .Net 4.0 project into it's own process (I believe this can work - but will take a bit of effort, IMO)


回答5:

You'll either have to upgrade the .NET 2 project to .NET 4, or downgrade the .NET 4 project to .NET 3.5 (or earlier).

How do you upgrade the .net version? I am not sure where to and what to specify. Please help.

Edit: I found the answer myself. Select the project, right click and choose Property Pages. There you can select framework version. or select the project and click Shift+F4



回答6:

Interestingly, I kept getting that error. What fixed it for me was creating a config called gacutil.exe.config in the same directory as gacutil.exe. The config content (a text file) were:

<?xml version ="1.0"?> <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
    </startup> </configuration>

I'm posting this here for reference and ask if anyone knows what's actually happening under the hood. I'm not claiming this is the "proper" way of doing it



回答7:

change INSTALL_UTIL_HOME directory from "C:\WINDOWS\Microsoft.NET\Framework\v2.0" to "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319" for installing the service. This error mainly occur for version missmatch.



回答8:

I got this error too, but my problem was that I was using an older version of GACUTIL.EXE.

Once I had the correct GACUTIL for the latest .NET version installed, it worked fine.

The error is misleading because it makes it look like it's the DLL you're trying to register that incorrect.



回答9:

This error may also be triggered by having the wrong .NET framework version selected as the default in IIS.

Click on the root node under the Connections view (on the left hand side), then select Change .NET Framework Version from the Actions view (on the right hand side), then select the appropriate .NET version from the dropdown list.



回答10:

Its .net Version mismatch of the dll so try changing to from in app.config or web.config. Generally have a higher Framework than lower because when we add system's dll to the lower version built .net application so it won't work therefore just change to the higher version



回答11:

The error was due to the way that I configured the Application Pool in IIS.

My web service uses an Application Tool configured for v2.0.50727. This resulted in the error message.

When I changed it to v4.0.30319, I did not get the error.



回答12:

When I changed the .Net frame work version of the App pool in which the particular project was hosted, I was able to resolve this particular issue.

App pool -> advanced settings -> .Net frame work version (changed v2.0 to v4.0)