De ce nu pot adăuga DLL-urile .NET în timpul rulării

Folosind CodeDOM am ceva de genul:

CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
parameters.ReferencedAssemblies.Add("System.Data.Linq.dll");
parameters.ReferencedAssemblies.Add("System.Xml.Linq.dll");
parameters.ReferencedAssemblies.Add("System.Core.dll");

și când rulez un program, aceasta este eroarea pe care o primesc pentru ultimele trei DLL-uri, primele două (System.DLL și System.Windows.Forms.DLL) nu au nicio problemă și eroare, dar de îndată ce adaug cele trei linii pentru a încărca DLL-uri prea, atunci am obține erori ca cea din imagine. Atât de ciudat și enervant și nu a reușit să găsească o cale de ao repara.

Mulțumiri.

enter image description here

0
@ChrisSinclair: Am setat platforma țintă la 4.0 în Visual Studio. Nu este doar Linq, chiar și pentru ultima care este System.Core dă o eroare similară.
adăugat autor Bohn, sursa
Cred că configurarea compilatorului se uită la .NET 3.0 sau mai vechi (linq a fost adăugat la 3.5). În partea de sus a capului meu, nu știu cum să-l schimb (poate puteți adăuga numele de asamblare complet calificat cu numărul versiunii?)
adăugat autor Chris Sinclair, sursa

1 răspunsuri

oh Wow! it was tricky!

Nu-i pasă ce este platforma țintă pe care este setat Visual Studio, ceea ce pare a fi propriul său clasă CodeProvider . Anterior, am folosit constructorul implicit . Dar are și un alt constructor care ia un parametru de dicționar. În acest parametru specificăm ce versiune de .NET să fie folosită. Deci, în loc să creez un nou obiect CodeProvider, ar trebui să o fac așa:

    Dictionary compilerInfo = new Dictionary();
    compilerInfo.Add("CompilerVersion", "v3.5");
    CSharpCodeProvider codeProvider = new CSharpCodeProvider(compilerInfo);

Acum functioneaza.

0
adăugat