2010-03-11 7 views
15

Así que a veces (muchas veces!) Que desea orientar una versión .NET específica (por ejemplo 3.0), pero luego debido a algún servicio .NET paquetes de entrar en problemas como:.NET versiones demonios

  • Dispatcher.BeginInvoke(Delegate, Object[]) < - esto se añadió en 3,0 SP2 (3.0.30618)
  • System.Threading.WaitHandle.WaitOne(Int32) < - esto se añadió en 3,5 SP1, 3.0 SP2, 2.0 SP2

Ahora, estos son detectados por el compilador JIT, por lo construir contra .NET 3.0 en Visual Studio no lo hará garantizando que se ejecutará en los sistemas .NET 3.0 solamente.

corto de

  • confirmando todas y cada función se utiliza, o
  • la limitación de su entorno de desarrollo para .NET 3.0 (que chupa ya que hay que desarrollar para otros proyectos también)

¿Cuál es la mejor manera de evitar el uso de extensiones?

Gracias!

Respuesta

4

Esta capacidad está integrado en Visual Studio como de VS 2008 SP1 y también está disponible en FxCop 1.36. Eche un vistazo a David Kean's blog post para más detalles.

alt text http://davesbox.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/blog/ErrorList_5F00_3.png

+0

YEEEESS !!!! Pero no hay soporte para VS 2008 Pro ...ssssiiiiigggh – moogs

+0

pero hay fxcop !!! ¡Gracias! – moogs

+0

Me alegro de ser de ayuda. Actualicé la respuesta para incluir también la referencia a FxCop. –

1

Antes de enviar un lanzamiento, compile su aplicación con la versión apropiada de Visual Studio que corresponda al denominador menos común de su base de usuarios objetivo.

Simplemente tenga preparada una máquina virtual que tenga, por ejemplo, Visual Studio 2005 sin SP a mano, y compile la solución desde allí antes de implementarla.

5

Microsoft tiende a suponer que, si tiene .NET XXX instalado, entonces debe estar en el paquete de servicio más reciente porque la Actualización de Windows se los enviará como actualizaciones críticas. Sé que es una suposición frágil y, a veces se rompe, pero eso es lo que se supone que debe suceder.

Actualmente, nuestros productos se dirigen a .NET 3.5 SP1 y, como tal, nos sorprendería encontrar un entorno de destino que aún ejecute .NET 3.5 RTM.

+0

esto es una especie de utilizarse en conjunción con un controlador de hardware. tiene que funcionar incluso con una PC sin conexión a Internet conectada a la red – moogs

+3

Si su tecnología de instalador lo permite, puede intentar incluir .NET 3.0 SP2 en su instalador como un requisito previo. Por ejemplo, InstallShield le permite descargarlo de la web o incrustarlo de forma independiente. –

0

Hace que esta ayuda: Versioning Controlled Build?

+0

Por favor, diga cómo cree que podría ayudar. No parece relacionado. –

+0

Controlando las versiones. –

2

Hubo una forma de decirle a Windows qué versión de .Net usa. Es algo así como la creación de un archivo llamado dllhost.exe.config en Windows \ system32 con xmllike:

<? xml version = "1.0" ?> 
<configuration> 
<startup> 
<SupportedRuntime version = XXXXXX> 
</startup> 
</configuration> 

Ver: http://msdn.microsoft.com/en-us/library/w4atty68.aspx

Cuestiones relacionadas