2010-07-07 15 views

Respuesta

12

Puede usar Visual Studio ventana Inmediata como una forma rápida de obtener el nombre calificado de ensamblaje para uno de los proyectos de solución.

IIRC, estos pasos deben trabajar:

  1. Abrir el archivo de una clase contenida en el proyecto para el que desea obtener nombre de ensamblado;
  2. Establezca ese proyecto como el proyecto de inicio para la solución;
  3. Abra la ventana Inmediato, por defecto C# entorno de acceso directo es CTRL +D +I;
  4. En la ventana Inmediato escriba typeof(ClassNameOfStep1).AssemblyQualifiedName y presione Ingrese.

La ventana Inmediatodepende de tiempo de diseño de evaluación de expresiones que a su vez depende de Visual Studio que aloja proceso por lo que hay que tenerlo activado, que por defecto ya está.

Además, realicé algunas pruebas rápidas y el nombre de la clase era suficiente en todos los casos, excepto cuando lo probé en VS 2008, que me requirió proporcionar el FullName del tipo.Por lo tanto, si Name da como resultado un error, utilice el Name calificado con el espacio de nombres.

+1

Lo intenté, pero obtuve el error "El tipo o el nombre del espacio de nombres 'MyClass' no es válido en este ámbito" –

+2

@Nam Gi VU, en lugar de 'MyClass' intente utilizar' MyNamespace.MyClass'. –

+0

@Angelo: Puse el espacio de nombres completo de la clase pero tampoco funciona. Obtuve "'CCC' no existe en el espacio de nombres 'A.BB'" cuando paso en typeof (A.BB.CCC.DDDD) .AssemblyQualifiedName :) –

4

Esto debería darle lo que está buscando:

var assemblyName = typeof(ClassNameGoesHere).AssemblyQualifiedName; 
var namespaceOfClass = typeof(ClassNameGoesHere).Namespace; 

Veo que acaba de añadir una nota a su pregunta acerca de "cuando se navega por las clases en el Explorador de soluciones", la respuesta simple es que por lo que yo sé, no se puede, porque eso no es lo que el Explorador de soluciones es para (que está ahí para navegar por los archivos en una solución, no lo que está contenido dentro de ellos) y también porque:

  1. un archivo puede contener múltiples clases
  2. Todos los archivos en un proyecto generalmente compilarán siempre en un solo ensamblaje, por lo que es redundante para mostrar ese nombre para cada archivo .

Es posible que desee ver si la "Vista de clase" le ofrece lo que desea, pero sospecho que no.

+0

Hola Rob, Busco una solución sin codificación. Gracias de todos modos. –

+0

@Nam Gi VU, he agregado una actualización para tener en cuenta su incorporación a la pregunta sobre Solution Explorer. – Rob

+0

Ya veo. Lo intenté en la vista de clase pero no tuve ayuda allí. He actualizado para agregar el caso: al editar los códigos de la clase. –

-3

Necesita Object Browser. Presione Ctrl + Alt + J.

Ahí verá toda la información meta de los tipos.

+0

¿Puede explicarme más sobre qué meta información debería buscar? –

2

Usted puede utilizar F # interative, basta con abrir la ventana (Ver -> Otras ventanas -> F # Interactiva) y tratar el siguiente:

> typedefof<System.Uri>.Assembly.FullName;; 
    val it : string = 
     "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 

Hay algunas ensamblados de referencia automáticamente como sistema. Si necesita obtener el nombre de otro ensamblado, primero deberá agregar la referencia (como el modelo de servicio, por ejemplo).

> #r "System.ServiceModel.dll";; 

--> Referenced 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.ServiceModel.dll' 

> typedefof<System.ServiceModel.ICommunicationObject>.Assembly.FullName;; 
val it : string = 
    "System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 

F # interative es parte de Visual Studio 2010.

Cuestiones relacionadas