2008-09-13 8 views
1

J'essaie de compiler dynamiquement du code en utilisant CodeDom. Je peux charger d'autres assemblées, mais je ne peux pas charger System.Data.Linq.dll. Je reçois une erreur:Impossible de charger System.Data.Linq.dll pour CodeDom

ne pouvait pas être trouvé le fichier de métadonnées 'System.Data.Linq.dll'

Mon code ressemble:

CompilerParameters compilerParams = new CompilerParameters(); 
compilerParams.CompilerOptions = "/target:library /optimize"; 
compilerParams.GenerateExecutable = false; 
compilerParams.GenerateInMemory = true; 
compilerParams.IncludeDebugInformation = false; 
compilerParams.ReferencedAssemblies.Add("mscorlib.dll"); 
compilerParams.ReferencedAssemblies.Add("System.dll"); 
compilerParams.ReferencedAssemblies.Add("System.Data.Linq.dll"); 

Toutes les idées?

+1

modifier la demande: veuillez corriger le titre. –

Répondre

3

Cela peut être dû au fait que cet assembly est stocké dans un emplacement différent de celui de mscorlib. Cela devrait fonctionner si vous fournissez un chemin complet vers l'assembly. Le moyen le plus pratique d'obtenir le chemin complet est de laisser le chargeur .NET faire le travail pour vous. Je voudrais essayer quelque chose comme ceci:

compilerParams.ReferencedAssemblies.Add(typeof(DataContext).Assembly.Location); 
0

Cela peut être une réponse stupide, mais êtes-vous que le code est en cours d'exécution sur une machine avec .NET Framework 3.5?

+0

Je suis sûr qu'il l'est. J'ai la même erreur, et j'ai à la fois .NET 3.5 et .NET 4. :) –

Questions connexes