title: Can you pass a variable into the C# compiler code?
body: <p>Here's my current situation - I have an application that compiles C# code taken in as a string, using CodeDom. I have a SecureString that stores a password and I was wondering if there would be any way to pass that SecureString variable into the compiled code as a SecureString?</p>
  
  <p>Here is some example code:</p>
  
  <pre><code>SecureString securePassword = getSecurePass();
  
  string codeString =
          @"using System;
          using System.Security;
  
          namespace SomeProgram
          {
              class MyClass
              {
                  static void Main(string[] args)
                  {
                      SecureString securePass = new SecureString();
                      // somehow set this equal to the securePassword variable
                  }
              }
          }";
  
  
  // Compiler Code
  CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
  string outFile = "output.exe"; 
  
  System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
  parameters.GenerateExecutable = true;
  parameters.OutputAssembly = outFile;
  CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, codeString);
  </code></pre>
  
  <p>I can't find a way to do this and I imagine that this isn't actually possible and instead I should possibly just store the password in an encrypted file and read it from that? </p>