I'm trying to build an application using the OpenNURBS toolkit (see here) and I'm getting a FileLoadException with the following message while debugging:
Mixed mode assembly is built against
version 'v2.0.50727' of the runtime
and cannot be loaded in the 4.0
runtime without additional
configuration information.
The OpenNURBS toolkit is the only non-System assembly in the project at this point, so I know the problem is with that file. Where and what are these supposed configuration options? Any help would be appreciated.
You need to add the following config to the app.config file:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
For details:
<startup> Element # MSDN
Related
I am developing application which uses SAP Crystal Reports for reporting with Visual Studio 2013 Professional.
I downloaded and install package from SAP site, install that. Report is prepared using wizard (this works correctly). Problem is if I following step in source code:
myCrystalReport.SetDataSource(myDataSet);
myDataSet is filled with required data. Displayed error is:
An unhandled exception of type 'System.IO.FileNotFoundException'
occurred in mscorlib.dll
Additional information: Could not load file or assembly
'file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports
for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI
4.0\win32_x86\dotnet1\crdb_adoplus.dll' or one of its dependencies.
During installation folder dotnet1 were not created. There is only folder dotnet.
Do somebody know how can be this problem resolved?
Thank you.
I had the exact same problem. My solution was to add this xml to the app.config file inside the <configuration> level:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
See also:
CRVS2010- crdb_adoplus.dll not found
Could not load file or assembly crdb_adoplus.dll
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>
</configuration>
Due to mixed mode assemblies has changed this problem will occur so it is recommended to you use above code into app.config file.
you have use below code in app.config and also have to set .net profile 4 client to .net profile 4 or 4.5 in project property.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
All above solution not working in my project and application goes in break mode. i solve this problem by adding following lines in app.config inside the configuration.
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
I am getting this exception,
System.IO.FileLoadException: A procedure imported by
'GeometryUtils.dll' could not be loaded
while trying to call Activator.CreateInstanceFrom(geomUtilsAssemblyPath, "GeometryUtils.IsmRegionFactory");
I can see GeometryUtils.dll gets loaded using process explorer along with its dependencies. Dependency Walker and Reflector does not report any issue as well.
FYI, GeometryUtils is built using .NET 4.0 and calling process is built using .NET 2.0. So I have specified,
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
in executeable config file.
Any ideas, what may be going on?
A 2.0 process can't support a 4.0 class library.
I have a mixed mode 2.0 dll, and a 4.0 dll. I want to supply this
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
to my dll. Without an app.config (or changing machine.config) is this even possible?
You cannot supply this information just for single assembly - the entire application will be executed either on top of 2.0 or 4.0 runtime host.
If the question is how to support v2.0 and v4.0 in application without app.config - see Embedding supportedRuntime into exe file
I got this exception after runing an execuable in command line execution:
"Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information."
After search this issue on internet, I found one of the way out is to configure App.Config file.
That works fine in VS2010 but still generates same error in command mode.
So is there any way to resolve this by using command line as generating newer version of .dll is impossible.
Thanks!
You can also try useLegacyV2RuntimeActivationPolicy="true"
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
Make sure you have configured both the App.config and the ProgramName.exe.config file.
For example:
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
Another solution can be to recompile all mixed(C++/CLI) assemblies you are dependent on for .NET 4.0. It is often not possible if these assemblies are third party.
The line:
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
was added to my App.config file and now i get the warning messages:
Could not find schema information for the element 'supportedRuntime'
Could not find schema information for the attribute 'version'
Could not find schema information for the attribute 'sku'
Can I just delete that line from the config file? Everything works fine when I run the app.
If your application is designed to target the Client Profile, you should setup your app.Config to match. If you want to target the full .NET Framework, make sure to change your project type in the project settings window of Visual Studio to .NET 4 Framework.
There is nothing wrong with this line. From the error messages, it sounds like there is a previous line in your app.config which has errors or is unclosed, or that this line was moved from it's correct place.
This is copied from a working project:
<configuration>
<!-- Other configuration -->
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
These lines are not required. I needed to write a console application to use asp.net membership provider. System.web was not available with client profile. So i changed to .Net framework 4. I removed these lines, it gave me no issues.
Not sure why is it needed at first place.