Ya hace tiempo que se lanzó .NET 5, pero seguro que algunos os habéis dado cuenta de que cuando desde Visual Studio creamos determinados tipos de proyecto, como bibliotecas de clases o proyectos de consola, por defecto éstos utilizan como target .NET Core 3.1 en lugar de .NET 5.
No se trata de un error; desde Microsoft justifican esta decisión porque .NET 5 no es una versión LTS, y prefieren que por defecto los proyectos sean creados usando una versión con mayor tiempo de soporte, como .NET Core 3.1.
Esto tiene fácil solución, porque tras crearlo simplemente deberíamos acceder a las propiedades del proyecto o editar el archivo .csproj
y modificar ajustar el target framework a nuestro antojo, pero, ¿cómo podríamos evitar tener que hacer esto cada vez?
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Cómo invocar métodos estáticos C# desde Javascript con Blazor (interop 2/3)
José M. Aguilar - ¡Mi pantalla se ha puesto gris!
José María Aguilar
.NET Core / .NET
- Announcing .NET 6 Preview 1
Richard Lander - Cómo obtener el código fuente de cualquier programa o DLL escrita para .NET (C#)
José Manuel Alarcón - DotNet Boxed includes prescriptive templates for .NET Core
Scott Hanselman - ICYMI C# 8 New Features: Nested Switch Expressions
Jason Roberts - Correctly converting a character to lower/upper case
Gérald Barré - Packaging a Roslyn Analyzer with NuGet package references
Gérald Barré - .NET 5 Deterministic Builds & Source Linking
Mitchel Sellers - Pure functions and unused return values
Cezary Piątek - Cake Frosting: More Maintainable C# DevOps
Lee P Richardson - Introducing Spreadsheet Rich Cell Data Types for .NET Objects
Mackenzie Albitz - C# 9.0: Improved Pattern Matching
Thomas Claudius Huber - My Favorite C# Features - Part 1: Strong-types, Implicit-types, Anonymous-types, and Target-types
Jeffrey T. Fritz - Porting versus interop for .NET
Mark Heath
Es frecuente que alumnos de mi curso de Blazor en CampusMVP me pregunten sobre la existencia de bibliotecas de componentes que les ayuden a desarrollar aplicaciones profesionales más rápidamente, por lo que no podía pasar por alto la noticia que publicaban hace unos días los amigos de Radzen en su cuenta de Twitter:
En efecto, ¡los componentes para Blazor de Radzen han pasado a ser open source y distribuidos bajo licencia MIT!
Para los que no los conozcan, Radzen es uno de los referentes en el mundo de las herramientas y componentes visuales para el desarrollo rápido de aplicaciones web, pero lo que nos ocupa ahora son el conjunto de más de 60 componentes visuales para Blazor Server y WebAssembly que ahora podremos utilizar de forma totalmente gratuita (bueno, aunque existen opciones para pagar por servicios de soporte profesional).
Publicado por José M. Aguilar a las 8:05 a. m.
Etiquetas: blazor, blazorserver, blazorwasm, componentes
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Cómo invocar métodos estáticos C# desde Javascript con Blazor (interop 2/3)
José María Aguilar - ¿Es mi biblioteca portable a .NET Core?
José María Aguilar
.NET Core / .NET
- An Introduction to Channels in C# & What's the Difference between Channel<T> and ConcurrentQueue<T> in C#?
Jeremy Clark - C#/WinRT Authoring Preview and Updates
Angela Zhang - Polymorphic deserialization with System.Text.Json
Josef Ottosson - ICYMI C# 8 New Features: Simplify If Statements with Property Pattern Matching
Jason Roberts - Tiny top-level programs with C# 9 and SmallSharp and Visual Studio
Scott Hanselman - Better refactoring for Unity projects using .NET analyzers
John Miller - Staying safe with .NET containers
Richard Lander - Building A Custom Event Hubs Event Processor with .NET
Matt Ellis - Creating a Windows Service with C#/.NET5
Alexandre Zollinger Chohfi - How to Unit Test Existing C# Apps? Easy—With a Mocking Tool
Viktoria Grozdancheva
Hoy voy a hablar de un cambio introducido en el framework hace ya algunos años, que, al menos en mi caso, pasó totalmente desapercibido en su momento y durante bastante tiempo después. Y he pensado que sería buena idea publicar sobre ello porque, como este mundo es así de grande, seguro que hay todavía algún despistado al que podría estar afectando a día de hoy y ni siquiera se ha dado cuenta :)
Como recordaréis, los atributos de validación [EmailAddress]
y [Url]
, presentes en el espacio de nombres System.ComponentModel.DataAnnotations
, los hemos utilizado durante años para asegurar que determinados valores de entrada eran direcciones de correo electrónico y URLs válidas, respectivamente:
public class Blog
{
[Required, EmailAddress]
public string ContactEmail { get; set; }
[Required, Url]
public string Url { get; set; }
}
Desde el principio de los tiempos, aún en ASP.NET "clásico", ambos atributos de validación utilizaban internamente complejas expresiones regulares para comprobar los valores, y la verdad es que funcionaban relativamente bien. Nuestras aplicaciones podían confiar en que valores que hubieran superado dichas validaciones serían, como mínimo, sintácticamente correctos y buenos candidatos a ser direcciones de correo o URLs válidas.
Pues bien, desde la llegada de NET 4.7.2, y luego en .NET Core, [EmailAddress]
y [Url]
ya no funcionan así. En palabras casi textuales del equipo de desarrollo, el objeto de estos dos atributos es simplemente prevenir algunos errores básicos al teclear, y no contemplar todas las posibilidades definidas en las respectivas RFC que describen la sintaxis de dichos valores.
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- ¿Se pueden desarrollar aplicaciones ASP.NET Core con Visual Basic .NET?
José María Aguilar - Cómo invocar funciones Javascript desde Blazor (interop 1/3)
José María Aguilar - Más velocidad de carga y mejor SEO en tus apps Blazor WebAssembly mediante prerrenderización
José María Aguilar
.NET Core / .NET
- What I Learned About C# From Job Interviews
Michael Shpilt - ICYMI C# 8 New Features: Write Less Code with Using Declarations
Jason Roberts - Create Anonymous Data Object With AutoFixture From Type
Adam Storr - Tracing IO in .NET Core
Jonathan Channon - A C# Implementation of McCarthy’s Ambiguity Operator
Jorge L Orejel - Substring in C#
Mahesh Chand - Developer's Cheat Sheet for C# 9.0
Franco Tiveron - My mental model of Span, Memory and ReadOnlySequence in .NET
Szymon Kulec - Command Line Parser on .NET5
Alexandre Zollinger Chohfi - Common Files In A .NET Solution
Khalid Abuhakmeh
El parser de Blazor de versiones anteriores a la 5.0 era bastante permisivo con los espacios no significativos que los desarrolladores dejamos a la hora de escribir nuestro código de marcado. Es decir, todos los espacios incluidos en el código fuente, fueran importantes o no para el resultado final, formaban parte del proceso de renderización y, por tanto, trasladados tal cual al navegador.
Entendemos por espacio no significativo aquél carácter espacio, tabulador, saltos de línea o similares que el navegador no va a representar visualmente al componer la página. Por ejemplo, un marcado como "<h2>1 2</h2>
" suele representarse en el browser exactamente igual que si hubiéramos enviado "<h2>1 2</h2>
" (salvo que hayamos usado reglas CSS específicas en dirección contraria), porque todos los espacios intermedios son ignorados.
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Autenticación JWT en APIs con ASP.NET Core
José María Aguilar - Cómo mostrar y ocultar elementos en Blazor
José María Aguilar
.NET Core / .NET
- ICYMI C# 8 New Features: Switch Expressions
Jason Roberts - PostSharp's Great Reset: Announcing Project "Caravela", a Roslyn-based aspect framework
Gael Fraiteur - .NET 5: How to enable .NET 5 runtime on console apps instead of .NET Core 3.1 ?
Anthony Giretti - Simplifying paths handling in .NET code with the FullPath type
Gérald Barré - Choosing a ServiceLifetime
Jimmy Bogard - Using C# Source Generators to create an external DSL
Luca Bolognese - Chromium WebView2 Control and .NET to JavaScript Interop
Rick Strahl