2010-09-17 23 views
6

Me enfrenta un problema con un conflicto entre la clase DateTime y un espacio de nombres por algún motivo desconocido que también se llamó DateTime.Espacio de nombres y conflicto de clase

Asamblea CompanyDateTime tiene espacio de nombres Company.DateTime

mi solicitud está en el espacio de nombres: Compañía

El problema es que cada vez que necesito utilizar DateTime clase, tengo que explícitamente decir System.DateTime es su forma de evitar esto?

IS es posible decir SomeRandomStuff = Company.DateTime y tienen DateTime siempre ser System.DateTime

Nota:

  1. Necesito hacer referencia a esta Asamblea en mi aplicación eventhough No lo uso porque algunos ensambles que necesito realmente usan esta clase.
  2. Puedo utilizar una entrada en el archivo app.config para identificar un ensamblado dependiente, pero no puedo hacerlo porque la política de la compañía está en contra y todo el ensamblado al que se hace referencia debe estar en la carpeta de salida.
  3. despliegue pasa por un servidor de compilación

Posible resolución? ¿Es posible que CompanyDateTime se implemente automáticamente en la carpeta de salida sin agregarlo a la referencia?

Respuesta

9

Pregunta: el problema es que cada vez que necesito para usar la clase DateTime, que tengo que decir explícitamente System.DateTime es su modo alguno de moverse por esta

respuesta: Ya respondió anterior - por ejemplo, utilizar un alias

using CompanyDateTime = Company.DateTime;

using StandardDateTime = System.DateTime;

Pregunta: ¿Es posible que CompanyDateTime se implemente automáticamente en la carpeta de salida sin agregarlo a la referencia?

Respuesta: Coloque este dll en la carpeta raíz de la aplicación y cree un evento postbuild que copie esto en la carpeta de salida. Puede usar el comando COPIA DOS habitual aquí.

Refer link for postbuild event details

+0

Utilicé su comando postbuild para copiar el archivo. Funcionó y espero que todavía funcione en el servidor de compilación. Gracias – Viv

8

Sí, utilice una directiva using en la parte superior de los archivos de código que hacen referencia a esto.

using SomeRandomStuff = Company.DateTime; 

Editar: es posible que tenga otro para resolver la ambigüedad:

using DateTime = System.DateTime; 
+1

No funciona, todavía tengo que decir System.DateTime utilizar la clase DateTime. – Viv

+0

Intenta agregar otro como se describe en la edición. –

+0

Todavía no funciona. – Viv

2

Utilice un alias.

Si desea utilizar System.DateTime sin tener que utilizar el sistema, a continuación, tratar:

using SysDate = System.DateTime;

Entonces, simplemente hacer referencia a ella como si fuera una clase:

SysDate mySystemDotDateTime = new SysDate();

+0

Utilicé el comando postbuild en lugar de usar un alias. Hubiera funcionado, pero encontré la otra solución mejor. Gracias. – Viv

4

Proporcione un alias al conjunto (el valor predeterminado es global, establezca el suyo en otra cosa). Puede configurar esto en la ventana de propiedades de Visual Studio cuando selecciona una referencia o usando un conmutador de compilación si está compilando manualmente. El compilador solo resolverá las cosas en el alias global, a menos que especifique un alias externo en la parte superior del archivo de código (extern alias myalias).

Nota, esto es diferente del alias del espacio de nombres que otros han mencionado. Con esto, simplemente debería poder usar DateTime para referirse al System.DateTime, en lugar de usar otro nombre. Si necesita hacer referencia a la otra tarde, que había necesidad de especificar myalias::Company.DateTime...

+0

Sí Funcionó para mí y se compiló correctamente, pero perdí el Intellsence para la variable. Esa es la única razón por la que no lo uso. Gracias. – Viv

Cuestiones relacionadas