2011-09-29 3 views
1

J'ai une solution C# et quelques DLL référencées. Bien que lors de la compilation en studio visuel (VS2010), il apparaît comme elle a réussi, lors de l'utilisation du compilateur C# il échoue: dll manquant apparemment ..Le compilateur C# ne trouve pas de DLL; solution compilée dans VS2010

csc /t:library /out:test.dll test.cs 


test.cs(22,10): error CS0246: The type or namespace name 
    'Attribute' could not be found (are you missing a using directive 
    or an assembly reference?) 

Est-ce que quelqu'un sait pourquoi est-ce qui se passe?

+0

Avez-vous modifié votre fichier de réponses par défaut? (csc.rsp.cfg ou quelque chose comme ça). S'il s'agit d'un programme de test court, pouvez-vous donner le code? Je suppose que c'est juste System.Attribute que vous essayez de trouver? –

+0

@Jon Skeet ce n'est pas system.attribute, j'ai raccourci le nom lors du collage ici..le fichier référencé est un autre dll, testé avant comme fonctionnant .. et j'ai fait modifier le fichier de réponse .. ne fonctionne pas .. – agatha

Répondre

4

Comme vous n'avez pas donné le code, le type Attribute n'est pas clair. Si c'est System.Attribute, je m'attendrais à ce que cela soit trouvé automatiquement via les références d'assemblage par défaut. Si c'est un type dans un autre assemblage, vous devez faire référence explicitement à partir de la ligne de commande:

csc /t:library /out:test.dll /r:OtherAssembly.dll test.cs 
+0

Je suis en essayant maintenant de spécifier les DLLs manquantes à partir de la ligne de commande ... – agatha

+0

@Leah: Même quand vous l'avez fait fonctionner, je recommande fortement de ne pas utiliser les noms de types qui sont déjà dans les espaces de noms BCL de base. –

+0

Je vais garder cela à l'esprit ... comme je l'ai déjà dit ... dans ce cas, le nom a été raccourci lors du collage de l'erreur :) ..Il fonctionne maintenant. Merci. – agatha

2

SCC ne sait rien sur le projet contenant Test.cs, ni les bibliothèques qui ce projet fait référence.

Vous devez utiliser le commutateur/r pour référencer d'autres assemblages. Notez qu'il existe un fichier appelé csc.rsp dans le dossier contenant csc.exe, qui spécifie les commutateurs de ligne de commande par défaut. Cela contient la plupart des assemblys de framework .NET habituels, ce qui explique pourquoi vous ne devez pas référencer explicitement mscorlib.dll, par exemple.

+0

..curieux que certains des dlls référencés ont été reconnus ... mais pas tous ... fonctionne maintenant si – agatha

Questions connexes