Dll referencing în CSharpCodeProvider funcționează numai atunci când este setat la .NET 2.0?

Când am setat clasa CSharpCodeProvider să utilizez .NET 3.5 erorile încearcă să încarce anumite DLL-uri referite:

Line number 0, Error Number: CS0006, 'Metadata file 'System.Linq.dll' could not be found;
Line number 0, Error Number: CS0006, 'Metadata file 'System.Collections.dll' could not be found;

Problema este că, dacă am setat-o ​​la 2.0, funcționează, dar nu poate folosi LINQ.

Acum, în alte fire, există soluții care spun că aceasta se datorează faptului că DLL-ul nu este în locul potrivit și oferă soluții precum:

typeof(System.Xml.Linq.Extensions).Assembly.Location

Pentru a obține locația locației Linq, dar datorită modului în care funcționează programul meu, nu știu ce DLL-uri ar putea fi necesar pentru încărcare. Aceasta nu este o problemă pentru bibliotecile externe, deoarece utilizatorul trebuie să introducă unde sunt, dar pentru System dlls am posibilitatea să obțin locația lor doar cu "System.Linq" sau "System.Collections" ?

2

1 răspunsuri

Nu cunosc System.Collections.dll sau System.Linq.dll . Majoritatea LINQ-urilor se află în System.Core.dll , iar colecțiile sunt în mscorlib și System.dll IIRC. Trebuie să faceți diferența între spațiile de nume și ansamblurile . (Utilizați folosind directivele pentru a importa spații de nume și adăugați referințe la ansambluri în cadrul proiectului.)

La ce clase te interesează? Uită-te la MSDN pentru a vedea care ansambluri sunt înăuntru.

6
adăugat
Oh, prostie. Există oricum ansambluri de căutare pentru spațiile de nume care se află în ansamblurile standard .NET utilizând o metodă construită sau o reflecție? De exemplu, mergeți de la System.Linq la System.Core.dll
adăugat autor Blam, sursa
Bine multumesc
adăugat autor Blam, sursa
@Blam: Nu, pentru că nu există o mapare 1: 1. Un ansamblu poate contribui la numeroase spații de nume și un spațiu de nume poate conține tipuri din mai multe ansambluri. Sunt concepte ortogonale care doar se întâmplă pentru a avea adesea o relație.
adăugat autor Jon Skeet, sursa