Ошибка компилятора C # CS0006: файл метаданных не найден - PullRequest
2 голосов
/ 25 ноября 2011

Я создал компилятор 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 и т. Д. *

...