.NET Framework (pronunciado " dot net ") es un marco de software propietario desarrollado por Microsoft que se ejecuta principalmente en Microsoft Windows . Fue la implementación predominante de la Infraestructura de Lenguaje Común (CLI) hasta que fue reemplazada por el proyecto multiplataforma .NET . Incluye una gran biblioteca de clases llamada Framework Class Library (FCL) y proporciona interoperabilidad entre lenguajes (cada lenguaje puede usar código escrito en otros lenguajes) en varios lenguajes de programación . Los programas escritos para .NET Framework se ejecutan en un entorno de software (a diferencia de un entorno de hardware ) llamado Common Language Runtime (CLR). El CLR es una máquina virtual de aplicaciones que proporciona servicios como seguridad, administración de memoria y manejo de excepciones . Por lo tanto, el código informático escrito con .NET Framework se denomina " código administrado ". FCL y CLR, en conjunto, constituyen .NET Framework.
FCL proporciona la interfaz de usuario , el acceso a datos , la conectividad con bases de datos , la criptografía , el desarrollo de aplicaciones web , algoritmos numéricos y comunicaciones de red . Los programadores crean software combinando su código fuente con .NET Framework y otras bibliotecas. El framework está diseñado para ser utilizado por la mayoría de las nuevas aplicaciones creadas para la plataforma Windows. Microsoft también ofrece un entorno de desarrollo integrado para software .NET llamado Visual Studio .
.NET Framework comenzó como software propietario , aunque la empresa trabajó para estandarizar la pila de software casi de inmediato, incluso antes de su primer lanzamiento. A pesar de los esfuerzos de estandarización, los desarrolladores, principalmente los de las comunidades de software libre y de código abierto , expresaron su inquietud con los términos seleccionados y las perspectivas de cualquier implementación libre y de código abierto, especialmente en lo que respecta a las patentes de software . Desde entonces, Microsoft ha modificado el desarrollo de .NET para que se ajuste más a un modelo contemporáneo de proyecto de software desarrollado por la comunidad, incluyendo la publicación de una actualización de su patente que promete abordar las preocupaciones. [ 2 ]
En abril de 2019, Microsoft lanzó .NET Framework 4.8, la última versión principal del framework como producto propietario, seguida de .NET Framework 4.8.1 en agosto de 2022. Desde entonces, solo se han publicado correcciones mensuales de errores de seguridad y confiabilidad para esa versión. No se planean más cambios para esa versión. .NET Framework seguirá incluyéndose en futuras versiones de Windows y continuará recibiendo actualizaciones de seguridad, sin planes de eliminarlo a partir de julio de 2025. [ 3 ]
Historia
Microsoft comenzó a desarrollar .NET Framework a finales de la década de 1990, originalmente bajo el nombre de Next Generation Windows Services (NGWS), como parte de la estrategia .NET de Microsoft . A principios del año 2000, se lanzaron las primeras versiones beta de .NET 1.0.
En agosto de 2000, Microsoft e Intel colaboraron para estandarizar Common Language Infrastructure (CLI) y C# . En diciembre de 2001, ambos fueron ratificados como estándares ECMA . [ 4 ] [ 5 ] La Organización Internacional de Normalización (ISO) hizo lo propio en abril de 2003. Las versiones actuales de los estándares ISO son ISO/IEC 23271:2012 e ISO/IEC 23270:2006. [ 6 ] [ 7 ]

Si bien Microsoft y sus socios poseen patentes para CLI y C#, ECMA e ISO exigen que todas las patentes esenciales para la implementación estén disponibles bajo " términos razonables y no discriminatorios ". Las empresas acordaron cumplir con estos términos y poner las patentes a disposición sin regalías. Sin embargo, esto no se aplicó a la parte del .NET Framework no cubierta por los estándares ECMA-ISO, que incluía Windows Forms , ADO.NET y ASP.NET . Las patentes que Microsoft posee en estas áreas podrían haber disuadido a otras empresas de implementar el framework completo. [ 8 ]
Windows Vista es la primera versión de Windows para clientes que integró .NET Framework.
El 3 de octubre de 2007, Microsoft anunció que el código fuente de las bibliotecas de .NET Framework 3.5 estaría disponible bajo la Licencia de Código Fuente de Referencia de Microsoft (Ms-RSL [ a ] ). [ 9 ] El repositorio de código fuente estuvo disponible en línea el 16 de enero de 2008 e incluía BCL, ASP.NET, ADO.NET, Windows Forms, WPF y XML. Scott Guthrie de Microsoft prometió que se añadirían las bibliotecas LINQ, WCF y WF. [ 10 ]
Las variantes .NET Compact Framework y .NET Micro Framework del .NET Framework ofrecían compatibilidad con otras plataformas de Microsoft, como Windows Mobile , Windows CE y otros dispositivos integrados con recursos limitados. Silverlight proporcionaba compatibilidad con navegadores web mediante complementos.

En noviembre de 2014, Microsoft también publicó una actualización de sus concesiones de patentes, que amplía aún más el alcance de sus compromisos anteriores. Proyectos anteriores como Mono existían en un área legal ambigua porque las concesiones anteriores de Microsoft se aplicaban solo a la tecnología en "especificaciones cubiertas", incluyendo estrictamente las ediciones 4 de ECMA-334 y ECMA-335. Sin embargo, la nueva promesa de patente no impone un límite a la versión de la especificación e incluso se extiende a cualquier tecnología de tiempo de ejecución de .NET documentada en MSDN que no haya sido especificada formalmente por el grupo ECMA, si un proyecto decide implementarla. Esto permite a Mono y otros proyectos mantener la paridad de características con las características modernas de .NET introducidas desde la publicación de la edición 4 sin correr el riesgo de litigios de patentes por la implementación de dichas características. [ 11 ] La nueva concesión mantiene la restricción de que cualquier implementación debe mantener un cumplimiento mínimo con las partes obligatorias de la especificación CLI. [ 12 ]
El 31 de marzo de 2016, Microsoft anunció en Microsoft Build que volvería a licenciar completamente Mono bajo una licencia MIT, incluso en escenarios donde anteriormente se requería una licencia comercial. [ 13 ] Microsoft también complementó su promesa de patente anterior para Mono, declarando que no haría valer ninguna "patente aplicable" contra las partes que estén "usando, vendiendo, ofreciendo a la venta, importando o distribuyendo Mono". [ 14 ] [ 15 ] Se anunció que el Proyecto Mono fue donado a la Fundación .NET. Estos desarrollos siguieron a la adquisición de Xamarin , que comenzó en febrero de 2016 y finalizó el 18 de marzo de 2016. [ 16 ]
El comunicado de prensa de Microsoft destaca que el compromiso multiplataforma ahora permite una pila .NET moderna del lado del servidor totalmente de código abierto. [ 2 ] Microsoft publicó el código fuente de WPF, Windows Forms y WinUI el 4 de diciembre de 2018. [ 17 ]
Arquitectura

Infraestructura de lenguaje común
La Infraestructura de Lenguaje Común (CLI) proporciona una plataforma independiente del lenguaje para el desarrollo y la ejecución de aplicaciones. Al implementar los aspectos centrales de .NET Framework dentro del ámbito de CLI, estas funciones no estarán ligadas a un solo lenguaje, sino que estarán disponibles en los numerosos lenguajes compatibles con el framework.
Entorno de ejecución de lenguaje común
.NET Framework incluye el Common Language Runtime (CLR). Este actúa como motor de ejecución de .NET Framework y ofrece numerosos servicios, como gestión de memoria , seguridad de tipos , manejo de excepciones , recolección de basura , seguridad y gestión de subprocesos . Todos los programas escritos para .NET Framework son ejecutados por el CLR.
Los programas escritos para .NET Framework se compilan en código CIL (Common Intermediate Language), en lugar de compilarse directamente en código máquina . Durante la ejecución, un compilador JIT ( Just-In-Time ) específico de la arquitectura convierte el código CIL en código máquina.
Ensamblajes
El código CLI compilado se almacena en ensamblados CLI . Según lo estipulado en la especificación, los ensamblados se almacenan en formato de archivo ejecutable portátil (PE), común en la plataforma Windows para todas las bibliotecas de vínculos dinámicos (DLL) y los archivos ejecutables EXE . Cada ensamblado consta de uno o más archivos, uno de los cuales debe contener un manifiesto con los metadatos del ensamblado. El nombre completo de un ensamblado (que no debe confundirse con el nombre del archivo en el disco) incluye su nombre de texto simple, número de versión, configuración regional y token de clave pública . Los ensamblados se consideran equivalentes si comparten el mismo nombre completo.
El creador del ensamblado también puede usar una clave privada para la nomenclatura segura . El token de clave pública determina la identidad real del firmante del ensamblado. Solo quienes conocen su clave privada (del sistema de criptografía de doble clave) pueden firmar ensamblados que tengan la misma nomenclatura segura que una versión anterior del ensamblado. La nomenclatura segura es necesaria para agregar ensamblados a la caché global de ensamblados .
A partir de Visual Studio 2015, la tecnología de compilación .NET Native permite compilar el código .NET de las aplicaciones de la Plataforma universal de Windows directamente a código máquina en lugar de código CIL, pero la aplicación debe estar escrita en C# o Visual Basic.NET. [ 18 ]
Biblioteca de clases
.NET Framework incluye una implementación de las bibliotecas estándar fundamentales de la CLI . La biblioteca de clases de .NET Framework (FCL) está organizada en una jerarquía de espacios de nombres. La mayoría de las interfaces de programación de aplicaciones (API) integradas forman parte de los espacios de nombres System.*o Microsoft.*. Estas bibliotecas de clases implementan muchas funciones comunes, como la lectura y escritura de archivos, la representación gráfica, la interacción con bases de datos y la manipulación de documentos XML. Las bibliotecas de clases están disponibles para todos los lenguajes compatibles con la CLI . La FCL implementa la biblioteca de clases base (BCL) de la CLI y otras bibliotecas de clases; algunas son especificadas por la CLI y otras son específicas de Microsoft.
BCL incluye un pequeño subconjunto de toda la biblioteca de clases y es el conjunto central de clases que sirven como la API básica de CLR. [ 19 ] Para .NET Framework, la mayoría de las clases consideradas parte de BCL residen en y mscorlib.dll. Las clases de BCL están disponibles en .NET Framework, así como en las implementaciones alternativas de CLI, incluyendo .NET Compact Framework , Microsoft Silverlight , .NET Core y Mono .System.dllSystem.Core.dll
FCL se refiere a la biblioteca de clases completa que viene con .NET Framework. Incluye BCL, un conjunto ampliado de bibliotecas, como Windows Forms , ASP.NET y Windows Presentation Foundation (WPF), así como extensiones a las bibliotecas de clases base ADO.NET , Language Integrated Query (LINQ), Windows Communication Foundation (WCF) y Workflow Foundation (WF). FCL tiene un alcance mucho mayor que las bibliotecas estándar de lenguajes como C++ y es comparable en alcance a las bibliotecas estándar de Java .
Con la introducción de implementaciones alternativas de CLI (por ejemplo, Silverlight), Microsoft introdujo el concepto de Bibliotecas de Clases Portátiles (PCL), que permite que una biblioteca consumidora se ejecute en más de una implementación. Con la proliferación de implementaciones, el enfoque PCL no logró escalar (las PCL se definen como intersecciones de la superficie de API entre dos o más implementaciones). [ 20 ] Como siguiente paso evolutivo de PCL, se creó retroactivamente la Biblioteca .NET Standard, basada en las System.Runtime.dllAPI existentes en UWP y Silverlight. Se recomienda a las nuevas implementaciones de CLI que implementen una versión de la Biblioteca Standard, lo que les permite ejecutar bibliotecas de terceros existentes sin necesidad de crear nuevas versiones. La Biblioteca .NET Standard permite una evolución independiente de las capas de la biblioteca y del modelo de aplicación dentro de la arquitectura .NET. [ 21 ]
NuGet es el gestor de paquetes para todas las plataformas .NET. Se utiliza para obtener bibliotecas de terceros en un proyecto .NET mediante una fuente de bibliotecas global en NuGet.org. [ 22 ] Las fuentes privadas pueden mantenerse por separado, por ejemplo, mediante un servidor de compilación o un directorio del sistema de archivos.

C++/CLI
Microsoft introdujo C++/CLI en Visual Studio 2005, que es un lenguaje y un método para compilar programas de Visual C++ para que se ejecuten dentro del .NET Framework. Algunas partes del programa C++ todavía se ejecutan dentro de un Visual C++ Runtime no administrado, mientras que las partes especialmente modificadas se traducen a código CIL y se ejecutan con el CLR del .NET Framework .
Los ensamblados compilados con el compilador C++/CLI se denominan ensamblados de modo mixto, ya que contienen código nativo y administrado en la misma DLL. [ 23 ] Estos ensamblados son más complejos de analizar mediante ingeniería inversa, ya que los descompiladores de .NET , como .NET Reflector, solo revelan el código administrado.
Principios de diseño
Interoperabilidad
Dado que los sistemas informáticos suelen requerir la interacción entre aplicaciones nuevas y antiguas, .NET Framework proporciona mecanismos para acceder a las funciones implementadas en programas nuevos y antiguos que se ejecutan fuera del entorno .NET. El acceso a los componentes del Modelo de Objetos Componentes (COM) se proporciona en System.Runtime.InteropServiceslos System.EnterpriseServicesespacios de nombres del framework. El acceso a otras funciones se realiza mediante los Servicios de Invocación de Plataforma (P/Invoke). El acceso a las funciones .NET desde aplicaciones nativas se realiza mediante la función inversa de P/Invoke.
Independencia lingüística
.NET Framework introduce un Sistema de Tipos Comunes (CTS) que define todos los tipos de datos y construcciones de programación compatibles con CLR, así como la forma en que interactúan, de acuerdo con las especificaciones de la CLI. Gracias a esta característica, .NET Framework permite el intercambio de tipos e instancias de objetos entre bibliotecas y aplicaciones escritas en cualquier lenguaje compatible con la CLI .
Seguridad de tipo
CTS y el CLR utilizados en .NET Framework también garantizan la seguridad de tipos . Esto evita conversiones de tipo mal definidas, invocaciones de métodos incorrectas y problemas de tamaño de memoria al acceder a un objeto. Además, esto hace que la mayoría de los lenguajes de la CLI sean de tipado estático (con o sin inferencia de tipos ). Sin embargo, a partir de .NET Framework 4.0, el Dynamic Language Runtime extendió el CLR, lo que permitió implementar lenguajes de tipado dinámico sobre la CLI.
Portabilidad
Aunque Microsoft nunca ha implementado el marco completo en ningún sistema excepto Microsoft Windows, lo ha diseñado para que sea multiplataforma, [ 24 ] y existen implementaciones disponibles para otros sistemas operativos (véase Silverlight y § Implementaciones alternativas ). Microsoft presentó las especificaciones para CLI (que incluye las bibliotecas de clases base, CTS y CIL), [ 25 ] [ 26 ] [ 27 ] C# , [ 5 ] y C++/CLI [ 28 ] tanto a Ecma International (ECMA) como a la Organización Internacional de Normalización (ISO), convirtiéndolas en estándares oficiales. Esto permite a terceros crear implementaciones compatibles del marco y sus lenguajes en otras plataformas.
.NET Core multiplataforma (anteriormente .NET Core) también está disponible oficialmente para muchas distribuciones de Linux y macOS. [ 29 ]
Seguridad
.NET Framework cuenta con su propio mecanismo de seguridad, que incluye dos características principales: Seguridad de Acceso al Código (CAS) y validación y verificación. CAS se basa en la evidencia asociada a un ensamblado específico. Normalmente, esta evidencia proviene del origen del ensamblado (ya sea que esté instalado en la máquina local o se haya descargado de Internet). CAS utiliza esta evidencia para determinar los permisos otorgados al código. Cuando un código requiere un permiso específico, CLR realiza un recorrido por la pila de llamadas, comprobando si cada ensamblado de cada método posee el permiso requerido. Si algún ensamblado no tiene el permiso, se generará una excepción de seguridad.
El bytecode CIL administrado es más fácil de aplicar ingeniería inversa que el código nativo, a menos que esté ofuscado . [ 30 ] Los programas descompiladores de .NET permiten a los desarrolladores sin habilidades de ingeniería inversa ver el código fuente detrás de los ensamblados .NET no ofuscados. Por el contrario, las aplicaciones compiladas a partir de código máquina nativo son mucho más difíciles de aplicar ingeniería inversa, y el código fuente casi nunca se produce con éxito, principalmente debido a las optimizaciones del compilador y la falta de reflexión . [ 31 ] Esto crea preocupaciones en la comunidad empresarial sobre la posible pérdida de secretos comerciales y la elusión de los mecanismos de control de licencias. Para mitigar esto, Microsoft ha incluido Dotfuscator Community Edition con Visual Studio .NET desde 2002. [ b ] También hay herramientas de ofuscación de terceros disponibles de proveedores como VMware , Vi Labs, Turbo y Red Gate Software . Hay herramientas de cifrado a nivel de método para código .NET disponibles de proveedores como SafeNet .
Gestión de la memoria
CLR libera al desarrollador de la carga de administrar la memoria (asignarla y liberarla cuando sea necesario); se encarga de la administración de la memoria al detectar cuándo se puede liberar de forma segura. Las instancias de tipos .NET (objetos) se asignan desde el montón administrado, un grupo de memoria administrado por CLR. Mientras exista una referencia a un objeto, ya sea directa o a través de un grafo de objetos, se considera que el objeto está en uso. Cuando no existe ninguna referencia a un objeto y no se puede acceder a él ni utilizarlo, se convierte en basura y se elimina mediante la recolección de basura.
.NET Framework incluye un recolector de basura (GC) que se ejecuta periódicamente, en un hilo separado del hilo de la aplicación, que enumera todos los objetos inutilizables y recupera la memoria asignada a ellos. Es un recolector de basura no determinista, compactador, de marcado y barrido . GC se ejecuta solo cuando se ha utilizado una cantidad determinada de memoria o hay suficiente presión de memoria en el sistema. Dado que no se garantiza cuándo se alcanzan las condiciones para recuperar la memoria, las ejecuciones de GC no son deterministas . Cada aplicación .NET tiene un conjunto de raíces, que son punteros a objetos en el montón administrado ( objetos administrados ). Estos incluyen referencias a objetos estáticos, objetos definidos como variables locales o parámetros de método actualmente en el ámbito, y objetos a los que se refieren los registros de la CPU. [ 32 ] Cuando GC se ejecuta, pausa la aplicación y luego, para cada objeto al que se refiere la raíz, enumera recursivamente todos los objetos alcanzables desde los objetos raíz y los marca como alcanzables. Utiliza metadatos de CLI y reflexión para descubrir los objetos encapsulados por un objeto y luego recorrerlos recursivamente. Luego enumera todos los objetos en el montón (que inicialmente se asignaron contiguos) usando reflexión. Todos los objetos no marcados como alcanzables son basura. [ 32 ] Esta es la fase de marcado . [ 33 ] Dado que la memoria ocupada por la basura no tiene consecuencias, se considera espacio libre. Sin embargo, esto deja bloques de espacio libre entre objetos que inicialmente eran contiguos. Luego, los objetos se compactan para que el espacio libre en el montón administrado vuelva a ser contiguo. [ 32 ] [ 33 ] Cualquier referencia a un objeto invalidada por el movimiento del objeto es actualizada por GC para reflejar la nueva ubicación. [ 33 ] La aplicación se reanuda después de que finaliza la recolección de basura. La última versión del marco .NET utiliza la recolección de basura concurrente junto con el código del usuario, lo que hace que las pausas sean imperceptibles, porque se realiza en segundo plano. [ 34 ]
El recolector de basura utilizado por .NET Framework también es generacional . [ 35 ] A los objetos se les asigna una generación . Los objetos recién creados se etiquetan como Generación 0. Los objetos que sobreviven a una recolección de basura se etiquetan como Generación 1. Los objetos de Generación 1 que sobreviven a otra recolección son Generación 2. El framework utiliza hasta objetos de Generación 2. [ 35 ] Los objetos de generaciones superiores se recolectan con menos frecuencia que los objetos de generaciones inferiores. Esto aumenta la eficiencia de la recolección de basura, ya que los objetos más antiguos tienden a tener una vida útil más larga que los objetos más nuevos. [ 35 ] Al ignorar los objetos más antiguos en la mayoría de las ejecuciones de recolección, se necesitan menos comprobaciones y operaciones de compactación en total. [ 35 ]
Actuación
Cuando se inicia una aplicación por primera vez, .NET Framework compila el código CIL en código ejecutable mediante su compilador justo a tiempo y almacena en caché el programa ejecutable en la caché de imágenes nativas de .NET. [ 36 ] [ 37 ] Gracias al almacenamiento en caché, la aplicación se inicia más rápido en los lanzamientos posteriores, aunque el primer lanzamiento suele ser más lento. Para acelerar el primer lanzamiento, los desarrolladores pueden usar la utilidad Generador de imágenes nativas para compilar y almacenar en caché manualmente cualquier aplicación .NET con antelación . [ 37 ]
El recolector de basura, que está integrado en el entorno, puede introducir retrasos imprevistos en la ejecución sobre los que el desarrollador tiene poco control directo. "En aplicaciones grandes, la cantidad de objetos con los que el recolector de basura necesita trabajar puede llegar a ser muy grande, lo que significa que puede llevar mucho tiempo recorrerlos y reorganizarlos todos." [ 38 ]
.NET Framework ofrece soporte para llamar a Streaming SIMD Extensions (SSE) mediante código administrado desde abril de 2014 en Visual Studio 2013 Update 2. Sin embargo, Mono ha ofrecido soporte para SIMD Extensions desde la versión 2.2 dentro del espacio de nombres Mono.Simd en 2009. [ 39 ] El desarrollador principal de Mono, Miguel de Icaza, ha expresado su esperanza de que este soporte SIMD sea adoptado por el estándar ECMA de CLR. [ 40 ] Streaming SIMD Extensions ha estado disponible en las CPU x86 desde la introducción del Pentium III . Algunas otras arquitecturas, como ARM y MIPS, también tienen extensiones SIMD. En caso de que la CPU no sea compatible con esas extensiones, las instrucciones se simulan en software. [ 41 ] [ 42 ]
Implementaciones alternativas
.NET Framework fue la implementación predominante de CLI, hasta el lanzamiento de .NET . Existen otras implementaciones para partes del framework. Aunque el motor de tiempo de ejecución está descrito por una especificación ECMA-ISO, otras implementaciones pueden verse afectadas por problemas de patentes ; las normas ISO pueden incluir la advertencia: "Se advierte que algunos elementos de este documento pueden estar sujetos a derechos de patente. ISO no se responsabiliza de la identificación de dichos derechos de patente". [ 43 ] Es más difícil desarrollar alternativas a FCL, que no está descrito por un estándar abierto y puede estar sujeto a restricciones de derechos de autor. Además, algunas partes de FCL tienen funciones y comportamiento específicos de Windows, por lo que su implementación en plataformas que no sean Windows puede ser problemática.
Aquí se enumeran algunas implementaciones alternativas de partes del marco.
- .NET Micro Framework es una plataforma .NET para dispositivos con recursos extremadamente limitados. Incluye una versión reducida de CLR y admite el desarrollo en C# (aunque algunos desarrolladores pudieron usar VB.NET , [ 44 ] si bien con ciertas modificaciones y con funcionalidades limitadas) y la depuración (en un emulador o en hardware), ambos mediante Microsoft Visual Studio . También incluye un subconjunto de la biblioteca de clases de .NET Framework (alrededor de 70 clases con aproximadamente 420 métodos), un marco de interfaz gráfica de usuario basado libremente en WPF y bibliotecas adicionales específicas para aplicaciones integradas.
- Mono es una implementación de CLI y FCL, y proporciona funciones adicionales. Se distribuye como software libre bajo la licencia MIT . Incluye soporte para las bibliotecas ASP.NET, ADO.NET y Windows Forms para una amplia gama de arquitecturas y sistemas operativos. También incluye compiladores para C# y VB.NET.
- Portable.NET (parte de DotGNU ) proporciona una implementación de CLI, partes de FCL y un compilador de C#. Es compatible con una variedad de CPU y sistemas operativos. El proyecto se descontinuó, y la última versión estable se lanzó en 2009.
- Microsoft Shared Source Common Language Infrastructure es una implementación de CLR no gratuita . Sin embargo, la última versión solo funciona en Windows XP SP2 y no se ha actualizado desde 2006. Por lo tanto, no incluye todas las características de la versión 2.0 de .NET Framework.
- CrossNet [ 45 ] es una implementación de CLI y partes de FCL. Es software libre que utiliza una licencia MIT de código abierto .
Licencias
Los marcos de código administrado de Microsoft y sus componentes se licencian de la siguiente manera:
Véase también
- Microsoft Foundation Class Library (MFC), una abstracción orientada a objetos utilizada para facilitar la programación de aplicaciones basadas en Windows antes de .NET Framework.
- .NET (anteriormente .NET Core)
- Lista de lenguajes de CLI
- Bibliotecas estándar (CLI) , las bibliotecas estándar de .NET
- Biblioteca de clases base (BCL)
Notas
- 1 2 La licencia se abreviaba anteriormente como Ms-RL, pero ahora Ms-RL se refiere a la Licencia Recíproca de Microsoft .
- ↑ Dotfuscator Community Edition 4.0
Referencias
- ↑ "Descargar el instalador sin conexión de .NET Framework 4.8" . Microsoft . Archivado del original el 15 de agosto de 2019. Consultado el 15 de agosto de 2019 .
- 1 2 Ibáñez, Luis (19 de noviembre de 2014). "Microsoft se suma al código abierto" . Opensource.com . Archivado del original el 2 de enero de 2020. Recuperado el 2 de enero de 2020 .
- ↑ gewarren. "Versiones de .NET Framework y Windows OS" . Microsoft Learn . Archivado del original el 3 de septiembre de 2022. Consultado el 21 de noviembre de 2020 .
- ↑ "Estándar ECMA-335: Infraestructura de lenguaje común (CLI)" (6.ª ed.). ECMA . Junio de 2012. Archivado del original el 29 de junio de 2013. Recuperado el 31 de agosto de 2005 .
- 1 2 "Estándar ECMA-334: Especificación del lenguaje C#" (4.ª ed.). ECMA . Junio de 2006. Archivado del original el 31 de octubre de 2010. Recuperado el 31 de agosto de 2005 .
- ↑ "ISO/IEC 23271:2012 Tecnología de la información – Infraestructura de lenguaje común" (3.ª ed.). Organización Internacional de Normalización . 13 de febrero de 2012. Archivado del original el 17 de marzo de 2012. Consultado el 17 de marzo de 2012 .
- ↑ "ISO/IEC 23270:2006 – Tecnología de la información – Lenguajes de programación – C#" (2.ª ed.). Organización Internacional de Normalización . 26 de enero de 2012. Archivado del original el 6 de diciembre de 2010. Consultado el 1 de abril de 2008 .
- ↑ Smith, Brett (16 de julio de 2009). "La promesa vacía de Microsoft" . Free Software Foundation . Archivado del original el 19 de agosto de 2009. Recuperado el 3 de agosto de 2009. Sin
embargo, hay varias bibliotecas que se incluyen con Mono y que son utilizadas comúnmente por aplicaciones como Tomboy, que no son requeridas por el estándar. Y para que quede claro, no estamos hablando de bibliotecas específicas de Windows como ASP.NET y Windows Forms. En cambio, estamos hablando de bibliotecas bajo el espacio de nombres System que proporcionan la funcionalidad común que los programadores esperan en los lenguajes de programación modernos.
- 1 2 Guthrie, Scott (3 de octubre de 2007). "Publicación del código fuente de .NET Framework" . Blog de Scott Guthrie . Microsoft . Archivado del original el 7 de septiembre de 2010. Recuperado el 15 de septiembre de 2010 .
- ↑ Guthrie, Scott (16 de enero de 2008). "El código fuente de la biblioteca .NET Framework ya está disponible" . Blog de Scott Guthrie . Microsoft . Archivado del original el 18 de marzo de 2015. Consultado el 28 de febrero de 2015 .
- ↑ Paul, Ryan (7 de julio de 2009). "Microsoft emite una promesa de patente y disipa las preocupaciones legales de Mono" . Ars Technica . Consultado el 1 de septiembre de 2025 .
- ↑ "Promesa de patente de Microsoft para bibliotecas y componentes de tiempo de ejecución de .NET" . GitHub . Archivado del original el 21 de febrero de 2021. Consultado el 16 de noviembre de 2014 .
- ↑ Krill, Paul (1 de abril de 2016). "El entorno de ejecución Mono de Xamarin obtiene una licencia más flexible" . InfoWorld . IDG . Archivado del original el 16 de abril de 2016. Recuperado el 13 de abril de 2016 .
- ↑ Ferraira, Bruno (31 de marzo de 2016). "Xamarin ahora viene gratis con Visual Studio" . The Tech Report . Archivado del original el 2 de abril de 2016. Recuperado el 12 de abril de 2016 .
- ↑ "Promesa de patente de Microsoft para Mono" . Mono en GitHub . 28 de marzo de 2016. Archivado del original el 16 de abril de 2016. Consultado el 16 de abril de 2016 .
- 1 2 Friedman, Nat (31 de marzo de 2016). "Xamarin para todos" . Blog de Xamarin . Archivado del original el 12 de abril de 2016. Recuperado el 12 de abril de 2016 .
- ↑ Gallo, Kevin (4 de diciembre de 2018). "Anuncio de código abierto de WPF, Windows Forms y WinUI en Microsoft Connect 2018" . Blog de desarrolladores de Windows . Microsoft. Archivado del original el 15 de diciembre de 2018. Recuperado el 24 de diciembre de 2018 .
- ↑ rpetrusha. "Compilación de aplicaciones con .NET Native" . Microsoft Learn . Archivado del original el 3 de diciembre de 2017. Consultado el 2 de diciembre de 2017 .
- ↑ "Comunidad de bibliotecas de clases base" . Microsoft . Archivado del original el 24 de abril de 2009. Consultado el 1 de junio de 2008 .
- ↑ ".NET Platform Standard" . GitHub . Archivado del original el 19 de mayo de 2016. Consultado el 23 de abril de 2016 .
- ↑ "Actualización sobre ASP.NET Core 1.0 RC2" . Scott Hanselman . 14 de abril de 2016. Archivado del original el 19 de abril de 2016. Consultado el 23 de abril de 2016 .
- ↑ "NuGet Gallery – Inicio" . nuget.org . Archivado del original el 21 de febrero de 2021. Consultado el 21 de febrero de 2021 .
- ↑ Ensamblados mixtos (nativos y administrados) archivados el 22 de octubre de 2014 en Wayback Machine , MSDN.
- ↑ "Scott Guthrie: Silverlight y el CLR multiplataforma" . Canal 9. 30 de abril de 2007. Archivado del original el 22 de mayo de 2015. Consultado el 16 de abril de 2016 .
- ↑ "ECMA 335 – Estándar ECMA-335 Infraestructura de lenguaje común (CLI) 4.ª edición (junio de 2006)" . ECMA. 1 de junio de 2006. Archivado del original el 14 de junio de 2008. Consultado el 1 de junio de 2008 .
- ↑ "ISO/IEC 23271:2006" . Normas ISO. 29 de septiembre de 2006. Archivado del original el 1 de julio de 2018. Consultado el 17 de abril de 2012 .
- ↑ "Informe técnico TR/84 Infraestructura de lenguaje común (CLI) – Información derivada del archivo XML de la partición IV" . ECMA. 1 de junio de 2006. Archivado del original el 7 de marzo de 2015. Consultado el 16 de abril de 2016 .
- ↑ "Especificación del lenguaje estándar ECMA-372 C++/CLI" . ECMA. 1 de diciembre de 2005. Archivado del original el 10 de agosto de 2008. Consultado el 16 de enero de 2008 .
- ↑ ".NET se vuelve multiplataforma con .NET Core" . 31 de enero de 2019. Archivado del original el 19 de febrero de 2024. Consultado el 19 de febrero de 2024 .
- ↑ Gartner, Inc. según lo informado en "Hype Cycle for Cyberthreats, 2006", septiembre de 2006, Neil MacDonald; Amrit Williams, et al.
- ↑ Cifuentes, Cristina (julio de 1994). "6: Análisis del flujo de control" (PDF) . Técnicas de compilación inversa (tesis). Universidad Tecnológica de Queensland . Archivado del original (PDF) el 22 de noviembre de 2016.
- 1 2 3 "Recolección de basura: administración automática de memoria en Microsoft .NET Framework" . Archivado del original el 3 de julio de 2007. Recuperado el 1 de junio de 2008 .
- 1 2 3 "Recolección de basura en .NET" . Archivado del original el 25 de mayo de 2008. Recuperado el 1 de junio de 2008 .
- ↑ ".NET Framework 4.5 incluye nuevas mejoras en el recolector de basura para aplicaciones cliente y servidor" . 20 de julio de 2012. Archivado del original el 4 de febrero de 2016. Consultado el 2 de octubre de 2015 .
- 1 2 3 4 "Recolección de basura—Parte 2: Administración automática de memoria en Microsoft .NET Framework" . Archivado del original el 26 de junio de 2007. Recuperado el 1 de junio de 2008 .
- ↑ "Entendiendo la compilación Just-In-Time de .NET" . telerik.com . 28 de mayo de 2013. Archivado del original el 11 de junio de 2013. Consultado el 21 de mayo de 2015 .
- 1 2 Compilación de MSIL a código nativo Archivado el 19 de abril de 2015 en Wayback Machine , MSDN, Microsoft
- ↑ "Comprendiendo la recolección de basura en .NET" . 17 de junio de 2009. Archivado del original el 10 de octubre de 2019. Consultado el 13 de noviembre de 2019 .
- ↑ "Notas de la versión Mono 2.2 – Mono" . mono-project.com . Archivado del original el 22 de noviembre de 2016. Consultado el 22 de noviembre de 2016 .
- ↑ de Icaza, Miguel (3 de noviembre de 2008). "Soporte SIMD de Mono: Haciendo que Mono sea seguro para los juegos" . Tirania.org. Archivado del original el 4 de noviembre de 2010. Recuperado el 17 de abril de 2012 .
- ↑ de Icaza, Miguel (3 de noviembre de 2008). "Soporte SIMD de Mono: Haciendo que Mono sea seguro para los juegos" . tirania.org . Archivado del original el 2 de julio de 2022. Recuperado el 6 de mayo de 2022 .
- ↑ "Tipos acelerados por SIMD en .NET" . Microsoft Learn . Archivado del original el 6 de mayo de 2022. Consultado el 6 de mayo de 2022 .
- ↑ ISO 9001:2008, Prólogo
- ↑ Fairbairn, Christopher (1 de abril de 2008). "Uso de VB.NET con el Micro Framework .NET «/dev/mobile» . /dev/mobile . Archivado del original el 27 de febrero de 2018. Recuperado el 17 de abril de 2012 .
- ↑ "CrossNet" . Codeplex.com. Archivado del original el 25 de enero de 2010. Consultado el 17 de abril de 2012 .
- ↑ "Contrato de licencia de usuario final redistribuible de Microsoft .NET Framework" . MSDN . Microsoft . 13 de septiembre de 2006. Archivado del original el 2 de abril de 2015. Consultado el 28 de febrero de 2015 .
- ↑ Bray, Brandon (15 de agosto de 2012). "Anuncio del lanzamiento de .NET Framework 4.5 RTM: producto y código fuente" . Blog de .NET Framework . Microsoft . Archivado del original el 4 de octubre de 2016. Consultado el 18 de agosto de 2016 .
- ↑ "Anuncio de la vista previa de .NET 2015: Una nueva era para .NET" . Blog de .NET Framework . Microsoft . 12 de noviembre de 2014. Archivado del original el 19 de agosto de 2016. Consultado el 18 de agosto de 2016 .
- ↑ ".NET Core 5" . dotnetfoundation.org . .NET Foundation. Archivado del original el 17 de febrero de 2015. Consultado el 17 de febrero de 2015 .
- ↑ ".NET Micro Framework" . dotnetfoundation.org . .NET Foundation. Archivado del original el 17 de febrero de 2015. Consultado el 17 de febrero de 2015 .
- ↑ "Licencia Roslyn" . GitHub . Fundación .NET. 5 de febrero de 2020. Archivado del original el 24 de marzo de 2018. Consultado el 14 de abril de 2018 .
- ↑ "ASP.NET MVC, Web API y Web Pages (Razor)" . dotnetfoundation.org . .NET Foundation. Archivado del original el 17 de febrero de 2015. Consultado el 17 de febrero de 2015 .
- ↑ "Licencia de ASP.NET Core" . GitHub . .NET Foundation. 5 de julio de 2017. Archivado del original el 21 de febrero de 2021. Consultado el 14 de abril de 2018 .
- ↑ "ASP.NET Ajax Control Toolkit" . dotnetfoundation.org . .NET Foundation. Archivado del original el 17 de febrero de 2015. Consultado el 17 de febrero de 2015 .
- ↑ "ASP.NET SignalR" . dotnetfoundation.org . Fundación .NET. Archivado del original el 17 de febrero de 2015. Consultado el 17 de febrero de 2015 .
- ↑ "Entity Framework" . dotnetfoundation.org . .NET Foundation. Archivado del original el 18 de abril de 2016. Consultado el 16 de abril de 2016 .
- ↑ "NuGet" . dotnetfoundation.org . Fundación .NET. Archivado del original el 17 de febrero de 2015. Consultado el 17 de febrero de 2015 .
Enlaces externos
- Sitio web oficial
- Descripción general de .NET Framework (MSDN)
- Repositorio de Github de .NET
- Implementaciones de .NET Framework
- Software de 2002
- Software multiplataforma
- Interfaces de programación de aplicaciones de Microsoft
- Herramientas de desarrollo de Microsoft
- Software gratuito de Microsoft
- Software gratuito exclusivo para Windows