c# - the - Orientación de.NET Framework 4 cuando se instala Framework 4.5
instalar net framework 4.5 visual studio 2010 (5)
Es hora de despejar esta pregunta. No soy un experto en WPF, no me gusta mucho para exactamente este tipo de problemas, la depuración de problemas de propiedad de la dependencia es una pesadilla. Pero estoy bastante convencido de que estás persiguiendo a un fantasma. WindowState ha sido una propiedad de dependencia desde 3.0, nada especial le ha sucedido en 4.5 que puedo ver o haber escuchado.
Tienes algún tipo de mensaje de error que nadie puede ver que te convenció de que tenía algo que ver con el enlace. Soy de Missouri, el estado Show Me. Bueno, lo suficientemente cerca de Wisconsin.
Dedique más tiempo a trabajar en el código que le proporciona un mensaje de excepción confiable y un seguimiento de la pila que lo ayuda a diagnosticar errores en la máquina en la que se implementa, uno sin un depurador que lo ayude a descubrir qué es lo que está mal. Para hacerlo, escriba un controlador de eventos para el evento AppDomain.CurrentDomain.UnhandledException. Registre o muestre el valor de retorno e.ExceptionObject.ToString (). Le da el mensaje de excepción y el Holy Stack Trace. Si eso no ayuda, actualice su pregunta con lo que vio.
Tengo VS2010 y VS2012 instalados en mi computadora y tenía .NET Framework 4.0 que luego actualicé a .NET Framework 4.5. Sin embargo, todavía estoy desarrollando aplicaciones que necesitan trabajar con .NET Framework 4.0. El proyecto dice que apunta a .NET Framework 4 (Perfil de cliente), los ensamblados apuntan incluso a la carpeta .NET Framework 4.0 en Assemblies referenciados. El problema surge cuando muevo esta aplicación a una máquina que solo tiene 4.0, no se inicia y aparece un error; el problema inmediato es una excepción que resulta de WindowState={Binding WindowState}
que no se puede hacer en 4.0, pero se puede en 4.5. Necesito que arroje la excepción en mi caja de desarrollo, ¿por qué no? Mi suposición es que a pesar de mis mejores esfuerzos es que usa los 4.5 dlls si existen. ¿Cómo puedo hacer que realmente use 4.0 sin desinstalar 4.5?
Actualizar
Para reproducir esta instalación .NET Framework 4.5 y crear un proyecto WPF que tenga como objetivo .NET Framework 4.0. Enlace el WindowState a una propiedad en una máquina virtual o código detrás de hacer que esta propiedad tenga un get público y un conjunto privado. .NET Framework 4.5 maneja esto muy bien incluso cuando Mode = TwoWay debe ignorar el conjunto .NET Framework 4 no lo hace y arroja una excepción: "Un enlace TwoWay o OneWayToSource no puede funcionar en la propiedad de solo lectura ''Estado'' de tipo .. . ". En el recuadro con .NET Framework 4.5 funciona como un encanto, pruébalo en una máquina con .NET Framework 4.0 y explota ... ¿Alguna idea de cómo apuntar realmente a 4.0 cuando 4.5 está instalado?
Informe de error a MS aquí: https://connect.microsoft.com/VisualStudio/feedback/details/774694/targeting-net-framework-4-0-when-4-5-doesnt-seem-to-work
Dijiste que no puedes reproducir esto en un proyecto de prueba. Entonces eso implica que puede ser algo que debería funcionar bien en 4.0, ¿verdad? Es posible que tenga una combinación de código que se bloquea en un error en 4.0, que se corrigió en 4.5. Cuando apunte a 4.0, solo recibirá advertencias cuando intente utilizar las características / API que el compilador puede determinar que no son compatibles con 4.0.
Algo que debería funcionar en 4.0 puede colapsar debido a algún error que rara vez se ve, y luego corregido en 4.5. Cuando su aplicación de destino 4.0 se ejecuta en entorno 4.5, se verá afectada por la corrección de errores de las características que existían en 4.0.
Puede haber una actualización para 4.0 que incluya la corrección de errores, para no requerir la actualización 4.5 si los usuarios son adversos a eso por alguna razón. Por lo tanto, podría no ser un cambio de 4.5, sino simplemente una coincidencia de que algunos usuarios no tienen todas las actualizaciones disponibles para 4.0 (que se incluirían acumulativamente en su 4.5).
Este tipo de casos rara vez me he encontrado, pero suceden a veces y son la razón por la que las personas que admiten aplicaciones .NET de escritorio son famosas por pedir a los usuarios que actualicen .NET Framework como primer intento para resolver problemas extraños antes de pasar el tiempo solucionando problemas.
A veces ocurre lo contrario. Tu código solo funciona debido a algún error o comportamiento deficiente de una API .NET, y más tarde una actualización lo limpia, tal vez reforzar la seguridad en algún lugar es lo más a menudo que he visto, y tu código se rompe repentinamente debido a una actualización menor de la versión de .NET.
Esto parece ser un error en .NET Framework 4.5 y debería lanzar la excepción, pero con .NET Framework 4.5 instalado, no hay forma de que su aplicación se ejecute en .NET Framework 4.0, siempre usará 4.5.
Consulte esta falla informada para obtener más información: http://connect.microsoft.com/VisualStudio/feedback/details/773682/wpf-property-with-private-setter-is-updated-by-a-twoway-binding
La solución:
Tengo el mismo problema cuando se instala VS2017 después de VS2015 : Framework 4.0 acaba de desaparecer de la lista de objetivos del proyecto.
Después de algunos comentarios, probé con el paquete NuGet: Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.4 y bin fix para 1.0.1.
¡No hagas eso! Mi tiempo de construcción fue ~ 300% para el mismo proyecto. Fue un desastre
Veo que 4.5 es un "reemplazo en el lugar" para 4.0 Sin embargo, esto no explica por qué no puedo ver ambas opciones en mi combinación de marcos de destino.
Estaba leyendo el mismo mantra en toda la web. Simplemente no es respuesta al problema. Framework 4.0 es imprescindible para cualquier software relacionado con maquinaria industrial, ya que se ejecuta en Windows XP, mientras que en .NET 4.5. es inútil en mi escenario, y probablemente para muchas otras cosas de la vida real.
La solución es simple: solo tiene que descargar e instalar Visual Studio 2013 Express desde la página web oficial: https://www.microsoft.com/en-us/download/details.aspx?id=44914
Después de instalarlo, simplemente abra su VS2015 y verá 4.0 nuevamente.
... "En lugar de reemplazo ..." mi ....
Este es el re-post de la respuesta que di en una pregunta duplicada. Publicaré aquí porque este hilo recibió más atención y las respuestas existentes aquí no dan solución al problema.
.Net 4.5 reemplaza .net 4.0 con nuevas bibliotecas con el mismo nombre, que en realidad tienen algunas correcciones. Esa es una respuesta corta.
A diferencia de las versiones anteriores, la actualización de .net 4 a 4.5 reemplaza los archivos, en lugar de agregar archivos uno al lado del otro. Incluso si tiene una carpeta como esta Windows / Microsoft.Net / Framework / v40 /, después de la actualización, hay un cambio en esta carpeta. Los archivos se cambian, algunos errores se manejan en .net sin la preocupación del desarrollador.
¿Cómo apuntar al framework 4.0 usando .net 4.5? Todavía no lo sé, pero todavía estoy cavando
Lectura sugerida sobre este tema:
Scott Hanselman: http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx
Rick Strahl: http://weblog.west-wind.com/posts/2012/Mar/13/NET-45-is-an-inplace-replacement-for-NET-40
Y un problema similar, creado por mí: https://.com/questions/26483168/errors-on-net-4-0-dont-appear-on-net-4-5