Can you compile C# so it doesn't need the .NET Framework at runtime?
You ask a loaded question. C# is merely a language and does not require the .NET Framework. The process of compiling it requires a compiler, which may or may not itself take a dependency on the .NET Framework (Microsoft's C# compiler does not -- it is written in native code). Your program will need to reference some assembly where types, classes, and methods can be found for your use. You can remove system.dll and mscorlib.dll from your references list and reference your own assemblies. So you can avoid dependencies on the .NET Framework if you really work at it. But in the end, unless you have a C# compiler that compiles programs to native code you still have a dependency on the CLR.
That's a very technical way of saying... almost nothing. But it answers your question. :) More practically useful however is how to get your C# programs to run with a minimum of dependencies. mkbundle from mono will actually let you compile it all into an .exe with virtually no dependencies.
But if you want to stick with the Microsoft .NET Framework, you can achieve a much lighter footprint and faster install of the dependencies you commonly need by using the Client profile of .NET 3.5 SP1. You can read about it here:
http://msdn.microsoft.com/en-us/library/cc656912.aspx
Create a standalone exe without the need to install .NET framework
If you want to execute an application that is developed using Net Framework 4, you will need to have installed .Net Framework 4 on client computer.
Your application is compiled in CIL (Common Intermediate Language), so it needs to be interpreted by the framework engine.
It is the same if you want to execute a Java program. You will have to install the Java Machine.
The only way you don't need to install frameworks is programming native applications with C, C++.
Possible to create an application c# with no framework
Short answer: NO.
There is no way to create a .NET application without any framework.
Can c# compiled app run on machine where .net is not installed?
Normally, you will need the .NET Framework being installed on the target system. There is no simple way around that.
However, certain third-party tools such as Xenocode or Salamander allow you to create stand-alone applications. See this related question:
Is there some way to compile a .NET application to native code?
As these solutions are not straight-forward and require commercial products I would recommend you to create a simple Visual Studio Setup and Deployment project. In the properties of the project you should include the .NET Framework as a pre-requisite. The setup.exe created will then automatically download and install the .NET Framework prior to installing your application.
Run a C# Program without having .NET Framework
I'm afraid that you cannot compile a C# program without the .NET Framework (or equivalent such as Mono) it was written for. There are some ways you can run a program without the framework, but not compile.
Compile a separate C# file against older .NET framework
In your app.config
file you need to specify the supported runtimes you want your app to support. So if you wanted to support 3.0 or newer you would need to have.
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
You also will need to make sure your project targets only .NET 3.0 in your project settings as that is the version that is bundled with Windows Vista.
If .NET is disabled in add-remove programs there is nothing you can do, you would need to have your user install some version either on their own or install it as part of your deployment (a setup installer or One-Click).
Related Topics
How to Change the Color of Winform Datagridview Header
Adding Custom Properties for Each Request in Application Insights Metrics
What Do the "+N" Values Mean at the End of a Method Name in a Stack Trace
Async/Await Keywords Not Available in .Net 4.0
Does Dispose Still Get Called When Exception Is Thrown Inside of a Using Statement
How to Add Http Header to Soap Client
With Rx, How to Ignore All-Except-The-Latest Value When My Subscribe Method Is Running
Entity Framework 4: How to Find the Primary Key
Xmlserializer Serialize Generic List of Interface
Itextsharp - How to Get the Position of Word on a Page
Check If a Property Exists in a Class
Why Won't Anyone Accept Public Fields in C#
Get Affected Rows on Executenonquery
Can a Picturebox Show Animated Gif in Windows Application
Anyone Know of a Set of C# Bindings for Ffmpeg
Fill Panel with Gradient in Three Colors
How to Put Conditional Required Attribute into Class Property to Work with Web API
How to Call the Parent Version of an Overridden Method? (C# .Net)