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