2009-05-05 15 views
8

¿Puedo agregar una referencia a System.Core.dll (.net 3.5) a una aplicación .NET 2.0 y lo utilizan¿Puedo agregar una referencia a System.Core.dll (.net 3.5) a una aplicación .net 2.0 y usarlo

estoy tratando de utilizar la clase TimeZoneInfo que está disponible sólo en .NET 3.5, haciendo referencia a System.Core.dll

Alternativamente, es su suplente de TimeZoneInfo en .NET 2.0 (o una clase personalizada)

+0

¿Por qué no acaba de actualizar a .net 3.5? – Graviton

+7

Mkay, eso no siempre es práctico para todos – Sameer

+0

Tenga en cuenta que TimeZoneInfo se encuentra en mscorlib.dll, no en System.Core.dll –

Respuesta

11

No, usted realmente no debería. Usted debe instalar 3.5 en la máquina de destino o se encontrará con un comportamiento impredecible en el programa en ejecución. El marco 3.5 que incluye System.Core.dll depende de varias correcciones de errores/características que se agregaron a CLR 2.0 SP1 (esto es parte del marco 3.5). Si ejecuta un CLR no parcheado, básicamente estará ejecutando código no probado y es probable que golpee varios errores.

+2

Definitivamente está más calificado en este tema que la mayoría, pero podría sugerir * no debería * en lugar de *no poder*? –

+1

@Rex, lo cambié a "no debería". Añadí el can not originalmente porque pensé que había un problema legal por el cual no podrías implementarlo. Pero no soy abogado, así que me resigné a que mi opinión sobre la programación de usted "realmente" no debería estar haciendo esto :). – JaredPar

3

No estoy seguro de poder hacer esto con System.Core.dll, pero ya lo hemos hecho antes con las DLL de Linq2Sql para una aplicación .NET 2.0. .net 3.5 usa la misma versión del CLR con ensamblados nuevos basados ​​en .net 2.0 runtime. Si puede obtener todas las dependencias, podría funcionar. Como dije, esto funcionó para nosotros con las DLL de Linq2Sql, pero no está garantizado para todos los escenarios. (Por ejemplo, probablemente no podrá obtener WPF para ejecutarse en Windows 2000, pero es posible que pueda hacer que Linq funcione en Objetos)

6

Scott Hanselman wrote a blog post describing cómo ejecutar una versión anterior de MVC en el marco 2.0 . Señaló que las dependencias en System.Core estarán probablemente bien, siempre que tenga cuidado de no llamar a ninguna rutina que dependa de las características CLR específicas de 3.0+ (por ejemplo, LINQtoSQL).

Él razón enyesado el blog con las renuncias que es no soportados, muy bien podría no funcionar para usted, pero tengo que trabajar y si se puede, a continuación, yay para usted.

0

.net 3.5 se ejecuta en .net 2.0 tiempo de ejecución. Por lo tanto, debería poder usarlo ... Pero hacer referencia a un dll único llevaría a un comportamiento inesperado, ya que no conoce todas las dependencias que system.core.dll tiene .... Recomiendo que no lo haga ...

0

Puede hacer esto, actualmente haciendo lo mismo para una herramienta de trabajo, también para utilizar las cosas de TimeZoneInfo. Siempre que eso sea todo lo que estás usando, no deberías tener problemas (al menos yo no).

Sin embargo, no estoy del todo seguro de la legalidad de agrupar System.Core con su aplicación. Por lo que sé, no tienes permitido hacerlo.

Terminé utilizando el de Mono para la herramienta que lo usa.

+0

Solo una advertencia al respecto: puede tener problemas con la firma de ensamblajes, pero más al punto que Mono necesita los archivos TZ que analiza; necesitará establecer la ubicación en estos archivos para que funcione (una propiedad estática) en TimeZoneInfo hace esto: TimeZoneDirectory). Puede obtener estos archivos desde aquí: ftp://elsie.nci.nih.gov/pub Estos archivos son de dominio público en caso de que alguien esté preocupado por la licencia que los rodea. – saret

Cuestiones relacionadas