Kan ikke tilføje system.dll reference til dynamisk kompileret C # .NET kode

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at dynamisk kompilere kode ved hjælp af CSharpCodeProvider-grænsefladen for dynamisk at kompilere kode ved kørsel med henblik på scripting af min ansøgning baseret på denne http://www.codeproject.com/KB/cs/codecompilation.aspx artiklen, den kompilerer uden problemer i VS2010 (kun advarsler om ICodeCompiler bliver udskrevet, men jeg har forsøgt begge veje: ignorerer advarslen og forlader koden som den er og ændrer kode i henhold til MSDN-anbefaling - hverken fungerer), men ved kørsel får jeg en enkelt compiler fejl for den dynamiske kode fortæller mig, at jeg har glemt at tilføje henvisning til System.dll og baseret på denne kode nedenfor, ser jeg ikke hvordan jeg glemte at gøre det: [3]


        cp.ReferencedAssemblies.Add("mscorlib.dll");
        cp.ReferencedAssemblies.Add("System.dll");
        //cp.ReferencedAssemblies.Add("System.dll");
        cp.ReferencedAssemblies.Add("System.Data.dll");
        cp.ReferencedAssemblies.Add("System.Xml.dll");
        cp.ReferencedAssemblies.Add("mscorlib.dll");
        cp.ReferencedAssemblies.Add("System.Windows.Forms.dll");
        cp.ReferencedAssemblies.Add("App.exe");


Interessant nok, hvis jeg gentager linjen for at tilføje system.dll (den kommenterede linje) får jeg en fejl, der fortæller mig, at System.dll er dobbelt refereret. Enhver ide om hvad dette handler om? Det er også værd at nævne, at prøven fra kodeprojektet fungerer, mens denne kode, som kun er en kopi fra den prøve uden ændringer, slet ikke. Jeg fandt ud af at prøven bruger .NET 2.0 sammen med VC # 2005 Compiler, mens VS2010 bruger .NET 4.0 som standard, så prøvede at ændre det så godt, men uden brug. Enhver hjælp er velkommen.


Tak på forhånd..

Bedste reference


fjern begge linjer, der siger cp.ReferencedAssemblies.Add("mscorlib.dll");