あなたが抱えている問題は、コマンドラインから取得した文字列がコンパイルされていないことです. コードに文字列リテラルがある場合、それらはコンパイルされます。これは、エスケープ文字が処理され、改行などに変換されるときです。おそらく、入力文字列の "\n" のすべてのインスタンスを改行文字に置き換えるなどの操作が必要になるでしょう。
編集:
ここから(わずかな変更を加えて)、CSharp コンパイラを使用して文字列をコンパイルし、エスケープ シーケンスを適切な文字に置き換えます。
public static string ParseString(string input)
{
var provider = new Microsoft.CSharp.CSharpCodeProvider();
var parameters = new System.CodeDom.Compiler.CompilerParameters()
{
GenerateExecutable = false,
GenerateInMemory = true,
};
var code = @"
public class TmpClass
{
public static string GetValue()
{
return """ + input + @""";
}
}";
var compileResult = provider.CompileAssemblyFromSource(parameters, code);
if (compileResult.Errors.HasErrors)
{
throw new ArgumentException(compileResult.Errors.Cast<System.CodeDom.Compiler.CompilerError>().First(e => !e.IsWarning).ErrorText);
}
var asmb = compileResult.CompiledAssembly;
var method = asmb.GetType("TmpClass").GetMethod("GetValue");
return method.Invoke(null, null) as string;
}