Я создал компилятор ac # с использованием учебника по MSDN и нескольких других ресурсов, в том числе здесь, и заставил его работать до тех пор, пока не добавлю дополнительные справочные сборки.Мои ошибки происходят из-за добавления «System.dll» и «System.Windows.Forms.dll» в список ReferenceAssemblies.
вот мой код:
private void SetUpCompilingParameters()
{
string ver = string.Format("{0}.{1}.{2}", Environment.Version.Major, Environment.Version.MajorRevision, Environment.Version.Build);
string libDir = string.Format(@"{0}", Environment.CurrentDirectory);
string raDir = @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0";
string exWpfDir = string.Format(@"C:\WINDOWS\Microsoft.NET\Framework\v{0}\WPF", ver);
string exDir = string.Format(@"C:\WINDOWS\Microsoft.NET\Framework\v{0}", ver);
MyCompiler = new CSharpCodeProvider();
CompilingParam = new CompilerParameters();
CompilingParam.GenerateExecutable = false;
CompilingParam.GenerateInMemory = true;
CompilingParam.IncludeDebugInformation = false;
CompilingParam.TreatWarningsAsErrors = false;
CompilingParam.CompilerOptions = string.Format("/lib:{0}", libDir);
CompilingParam.CompilerOptions = string.Format("/lib:{0}", raDir);
CompilingParam.CompilerOptions = string.Format("/lib:{0}", exDir);
//CompilingParam.CompilerOptions = string.Format("/lib:{0}", exWpfDir);
CompilingParam.ReferencedAssemblies.Add("System.dll");
CompilingParam.ReferencedAssemblies.Add("System.Windows.Forms.dll");
}
Как видите, яЯ явно ссылаюсь на каталоги в CompilerOptions, но это не помогает.Я хотел бы протестировать решение на здесь на stackoverflow , которое использует:
CompilingParam.ReferencedAssemblies.Add(typeof(System.Xml.Linq.Extensions).Assembly.Location);
, но у меня возникают проблемы при использовании его для общего System.dll и т. Д. *