简体   繁体   中英

Program written using .net 4.0 but I need this application to run on computers running .net 2.0

This question should be quite clear from its title alone, but let me explain with a bit more detail. I just got finished writing my application in what, I believe to be, .Net 4.0 framework (see picture below). After realizing that I would need my application to be compatible with even the earliest versions of the .Net framework, I went back and changed the Target Framework in Visual Studio's Properties window. Doing so, unfortunately, left me with a painfully long list of warnings - and one critical error. I was curious if anyone had some solution for how I can get my Application (written using the .Net 4.0 framework) to run in an Environment running the .Net 2.0 framework.

Original compilation

在.Net 4.0 Framework中编译的证明

List of errors:

.Net 2.0错误 Thank you, Evan

EDIT:

I understand that the second picture is not completely visible for most of us, so I will post the errors below:

Warning 9   The referenced component 'System.Xml.Linq' could not be found.  
Warning 10  The referenced component 'System.Data.DataSetExtensions' could not be found.    
Warning 8   The referenced component 'System.Core' could not be found.  
Warning 11  The referenced component 'Microsoft.CSharp' could not be found.     
Warning 4   The primary reference "System.Xml.Linq", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Xml.Linq" or retarget your application to a framework version which contains "System.Xml.Linq".   Protection
Warning 2   The primary reference "System.Xml.Linq" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Xml.Linq" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".   Protection
Warning 5   The primary reference "System.Data.DataSetExtensions", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Data.DataSetExtensions" or retarget your application to a framework version which contains "System.Data.DataSetExtensions". Protection
Warning 3   The primary reference "System.Data.DataSetExtensions" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Data.DataSetExtensions" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".   Protection
Warning 1   The primary reference "System.Core", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Core" or retarget your application to a framework version which contains "System.Core".   Protection
Warning 6   The primary reference "Microsoft.CSharp", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CSharp" or retarget your application to a framework version which contains "Microsoft.CSharp".    Protection
Error   7   Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Line 123, position 5.    C:\Users\FARINA_EVAN\Documents\Programming\C#\Run Time Crypter\Run Time Crypter\Properties\Resources.resx   123 5   Protection

When you create a new project targeting .NET 4.0, Visual Studio automatically adds references to some commonly used :NET 4.0 assemblies. However, when chaning the target platform these references are not removed, and hence needs to be manually removed since you cannot reference a .NET 4.0 assembly from a .NET 2.0 application.

So start by removing these erroneous references, and see if there are any errors still. Possibly you need to change some of your source code if you have used any .NET features not available in .NET 2.0, or you may need to add new references to .NET 2.0 assemblies if they are missing.

Any compiler errors appearing will likely point you in the right direction.

Yes, but you'll need to remove any code referencing a .net version greater than 2. To clear these errors above, you'll need to remove references to all of the items where it says "The referenced component xx could not be found". Additionally, you'll need to search through resource, config, etc files to replace any .net 4 reference to .net 2 -> from 4.0.0.0 to 2.0.0.0, or completely remove the references if they are non-existent in .net 2.

The error messages tell you what is wrong, in this case, that you have references in your project that cannot be resolved. Expand the references node in your project tree and remove the references with warning icons on them.

If you try to compile after that, you might get other errors about classes, namespaces or keywords that you used that are not available in .NET 2.0. You'll have to remove those or change your code then.

由于Linq在.NET 2.0中不可用,因此您可以尝试使用LinqBridge作为替代品。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM