2009-10-26 12 views
1

J'étudie des concepts liés au framework .NET. Je suis confus à un moment donné. D'après ce que je comprends les compilateurs CSC.exe et AL.exe compile les fichiers pour former l'ensemble en fonction des commutateurs. Donc, ma question est 1) Différents compilateurs dans le cadre .NET cible le CLR. Cela signifie-t-il que les fichiers individuels (code) et les fichiers de ressources sont compilés pour former un assembly et que cet assembly est exécuté à l'exécution par le CLR?Création d'un assemblage - CLR

2) Comment cela se produit-il lorsque j'utilise Visual Studio .NET?

Merci.

Répondre

3
  1. Oui, c'est correct. L'assembly contient la traduction MSIL des fichiers source, que le CLR convertit en code machine et exécute. Lorsque vous choisissez la commande Générer dans Visual Studio, il exécute le compilateur approprié au type de fichiers dans votre projet (par exemple le compilateur C# pour les fichiers source C#) et produit un assembly. (VS n'éxécute pas csc.exe, al.exe, etc .; il utilise en processus équivalents Mais le résultat est essentiellement le même..)

0

La réponse à la question 1 est: Oui.

La réponse à la question 2 est que Visual Studio invoque le compilateur pour vous et utilise votre fichier de projet pour fournir au compilateur les informations dont il a besoin pour créer l'assembly.

0

1: à peu près; notez que tous les fichiers doivent être considérés ensemble (ils ne sont généralement pas compilés individuellement puis combinés), et que techniquement IL n'est pas "exécuté" (puisqu'il ne s'agit pas d'instructions CPU natives); il doit être soit traduit (par le JIT ou NGEN) en code machine, soit sur une plate-forme s ("micro framework") il est interprété. Mais le résultat est le même ...

2: même processus, sauf qu'il n'appelle pas directement les exes - il appelle directement le code directement.

0

Le concept d'un espace de noms n'est pas lié à celui d'un assembly. Un même assemblage peut contenir des types dont les noms hiérarchiques ont un espace de noms différent

racines, et une racine d'espace de noms logique peut s'étendre sur plusieurs assemblys. Dans le .NET Framework, un espace de noms est une commodité de nommage logique au moment de la conception, tandis qu'un assembly établit

le nom l'étendue pour les types lors de l'exécution.

Shrirang Jadhav