Typically a compiler will only compile source files that it's been told to compile in a single pass. ie: specify all .cs names on the command line, or specify to compile all .cs files in a given folder.
In this case:
string []arrCode = { code, "base.cs" };
CompilerResults results =
compiler.CompileAssemblyFromSource(compilerparams, arrCode);
Alternative syntax:
CompilerResults results =
compiler.CompileAssemblyFromSource(compilerparams, code, "base.cs");