Sort of. The .NET compiler compiles your source code into IL (an intermediate language) and packages it in an assembly (usually one .DLL or .EXE file) which you deploy. At run-time, it is hosted by a CLR (common language runtime) which is responsible for executing the code, enforcing security rules, and so on. The main desktop CLR for Windows (there are others like Mono and Silverlight) doesn't interpret the IL, but rather "JIT"s (just in-time compiles) the IL code into native code before executing methods (functions).
Note there are actually some performance advantages to just in-time compilation. For example, the CLR can optimize the native code it generates based on performance characteristics of the machine it is running on like type of CPU, CPU cache size, number of CPUs, RAM size, etc. Traditional compilers can't do this as they don't know what machine the code they generate will ultimately be executed on.
Also, assemblies can be "pre-JITted" using a tool called ngen. In this process the native code is compiled from the IL before the assembly is executed and cached on disk. That way, no JITting overhead is incurred at run-time.