Visual Studio
64-bit Applications

You can compile your application and specify that it should run on a 64-bit operating system either as a native application or under WOW64. WOW64 is a compatibility environment provided by the operating system that allows a 32-bit application to run on a Windows 64-bit operating system.

Remarks

All applications built with the 1.0 and 1.1 releases of the .NET Framework are treated as 32-bit applications and are always executed under WOW64 on the 32-bit common language runtime (CLR) on a 64-bit operating system. In addition, 32-bit specific applications built with version 2.0 of the .NET Framework would run under WOW64 on 64-bit platforms.

Visual Studio will install the 32-bit version 2.0 CLR on an x86 machine, and both the 32-bit and appropriate 64-bit version 2.0 CLR on a 64-bit Windows machine. (Visual Studio 2008 is a 32-bit application and when installed on a 64-bit Windows operating system will run under WOW64.)

NoteNote:

Due to the design of x86 emulation and the WOW64 subsystem for the Itanium processor family, applications are restricted to execution on one processor. Single processor execution and x86 emulation reduce the performance and scalability of 32-bit .NET Framework applications running on Itanium-based systems. It is recommended that applications using the .NET Framework Version 1.1 be used for interactive, client applications, and not for applications that demand high performance or scalability, such as high-load ASP.NET applications. Consider using the .NET Framework Version 2.0, which includes native 64-bit support for Itanium-based systems, for increased performance and scalability.

As with 32-bit Windows operating systems, there is a 2GB limit on the size of an object you can create while running a 64-bit managed application on a 64-bit Windows operating system.

In many cases, assemblies will run the same on the 32-bit or 64-bit CLR. Some reasons for a program to behave differently when run by the 64-bit CLR include:

  • Structs that contain members that change size depending on the platform, such as any pointer type.

  • Pointer arithmetic that includes constant sizes.

  • Incorrect platform invoke or COM declarations that use Int32 for handles instead of IntPtr.

  • Casting IntPtr to Int32.

For more information on porting your 32-bit application to run on the 64-bit CLR, see http://msdn.microsoft.com/library/?url=/library/en-us/dndotnet/html/64migrate.asp.

General 64-bit programming information

For general information about 64-bit programming issues see,

Compiler support for creating 64-bit applications

An application built using .NET Framework 2.0 (on a 32-bit or 64-bit machine) by default will run as a native application (not under WOW64) on a 64-bit machine. The following table lists topics that discuss how to use Visual Studio compilers to create 64-bit applications that will run either as native, under WOW64, or be able to do both.

Compiler

Compiler Option

Visual Basic

/platform (Visual Basic)

Visual C#

/platform (Specify Output Platform) (C# Compiler Options)

Visual C++

You can create platform agnostic MSIL applications with /clr:safe; see /clr (Common Language Runtime Compilation) for more information.

Visual C++ ships separate compilers that target each 64-bit operating system. For additional information on using Visual C++ to create native applications that run on a 64-bit Windows operating system, see 64-Bit Programming with Visual C++.

JScript

/platform (Visual Studio - JScript)

Determining the status of an .exe or .dll

Use corflags.exe at the command line to see if it an .exe or .dll is meant to run only on a specific platform or under WOW64. You can also use corflags.exe to change the platform status of an .exe or .dll. See CorFlags Conversion Tool (CorFlags.exe) for more information. A Visual Studio assembly's CLR header (or COM+ Runtime header) has the Major Run-time Version Number set to 2 and the Minor Run-time Version Number set to 5. In Visual Studio 2003 assemblies, they are 2 and 0, respectively. All applications that have the minor runtime version set to 0 are treated as legacy applications and are always executed under WOW64 on 64-bit machines.

Use the GetPEKind to programmatically query an .exe or .dll to see if it is meant to run only on a specific platform or under WOW64.

See Also

Other Resources

Tags : brokenlink


Community Content

Guruparan
URL not valid in "General 64-bit programming information " -Pls fix it
URL : http://msdn.microsoft.com/netframework/programming/64bit/

Navigating to : http://msdn.microsoft.com/en-us/ms123402.aspx?missingurl=%2fnetframework%2fprogramming%2f64bit%2f

Please fix the appropriate link
Tags :

Page view tracker