Archives par mot-clé : C#

Histoire d’une migration en .NET Core – Partie 1

Histoire d’une migration en .Net Core

A moins que vous ne viviez dans une grotte, vous devez savoir que Microsoft est en train de développer un nouveau framework, totalement réécrit, modulaire, open source, bref que du bon en perspective. Le nom de ce nouveau venu : .Net Core.

Dans sa lancée Microsoft propose une nouvelle approche aux librairies portables. En effet les PCL (Portable Class Libraries) sont diablement efficaces, mais la multiplication des framework désormais disponibles apportent quelques complications dans leur relations et dépendances. Cette nouvelle approche se nomme: .Net Standard.

Peut-être que j’aurais le temps d’en parler plus longuement un jour, en attendant Olivier Dahan à déjà écrit des articles intéressants à lire .NET Core ASP.NET Core et Xamarin et .NET Standard arrive !.

Au cas où certains ne le saurait pas (ce dont je doute ;)) j’ai effectué le portage
en .Net de la célèbre librairie Astrodient Swiss Ephemeris qui est écrite en C.

Dés le départ j’ai effectué ce portage comme une librairie PCL (Profile 136) afin d’être utilisable dans la plupart des applications .Net que nous pouvons développer.

Avec .Net Core qui pointe le bout de son nez, j’ai commencé l’étudier, et quoi de plus efficace que de mettre en pratique ce que l’on étudie 😉 Donc en route pour migrer SwissEphNet.

Continuer la lecture de Histoire d’une migration en .NET Core – Partie 1

La fonction BrowserLink ne fonctionne pas avec les applications ASP.NET Core

La fonction BrowserLink ne fonctionne pas avec les applications ASP.NET Core

Si vous êtes un fidèle de Visual Studio pour faire du développement d’application ASP.NET, vous utilisez certainement l’une des fonctionnalités très intéressante « BrowserLink » qui couplée aux « Web Essentials » rend le développement Web extrêmement pratique.

Si maintenant vous vous lancez dans le développement « ASP.NET Core » le futur du développement Web de Microsoft, vous pouvez constater avec regret que cette fonctionnalité n’a pas l’air d’être disponible.

Pas de panique Yanos est là 🙂

Continuer la lecture de La fonction BrowserLink ne fonctionne pas avec les applications ASP.NET Core

SwissEph for .Net passe à .NET Core (2.5.1.14)

SwissEph for .Net passe à .NET Core (2.5.1.14)

Bonjour,

Pour ceux que ca intéresse la librairie SwissEph for Net est passée à la version 2.5.1.14, et elle est compilée en .NET Core.

Le paquet Nuget cible 3 versions désormais:

  • Net 4.0
  • Net Standard 1.3
  • PCL Profile 136 : (.NETFramework 4.0, Silverlight 5.0, Windows 8.0, WindowsPhone 8.0)

Les programmes SweMini and SweTest ont été convertis en Application .NET Core. Elles ciblent 2 versions:

  • Net 4.0
  • Net Core App 1.0

Tous les binaires sont disponibles dans le fichier binary.zip de la release.

Liens utiles:

Astrodienst Swiss Ephemeris : http://www.astro.com/swisseph/
Projet GitHub : https://github.com/ygrenier/SwissEphNet
Package Nuget : http://www.nuget.org/packages/SwissEphNet/

A bientôt,

Yanos

SwissEph for .Net à la version 2.05.01 (2.5.1.13)

SwissEph for .Net à la version 2.05.01 (2.5.1.13)

Bonjour,

Pour ceux que ca intéresse la librairie SwissEph for Net est passée à la version 2.5.1.13 basée sur les Swiss Ephemeris version 2.05.01.

Toutes les informations sur cette nouvelle version se trouvent dans ce message : https://groups.yahoo.com/neo/groups/swisseph/conversations/messages/6008

SwissEph for .Net est une librairie portable (PCL) .Net de la librairie des Astrodient Swiss Ephemeris, livrée sous forme de package Nuget.

Liens utiles:

Astrodienst Swiss Ephemeris : http://www.astro.com/swisseph/
Projet GitHub : https://github.com/ygrenier/SwissEphNet
Package Nuget : http://www.nuget.org/packages/SwissEphNet/

A bientôt,

Yanos

Firebird et .NET/C#

Firebird et .NET/C#

Pour les besoins d’un petit projet j’ai recherché une solution de base de données légère, trouvant que « SQL Express » était surdimensionné pour le besoin. Et c’est là que m’est revenu un nom du fin fond de mes souvenir de développeur Delphi: Firebird.

Continuer la lecture de Firebird et .NET/C#

P/Invoke : utiliser une DLL native 32bits ou 64bits en fonction de la plateforme en mode « ANY CPU »

P/Invoke : utiliser une DLL native 32bits ou 64bits en fonction de la plateforme en mode « ANY CPU »

Lorsqu’on utilise P/Invoke avec une DLL native (via l’attribut DllImport), nous devons forcer la compilation de notre application dans la plateforme de la DLL (32 ou 64 bits). Toutefois on peut avoir la DLL dans les deux plateformes (par exemple Lua 5.3) et vouloir compiler notre application en « Any CPU » et que la DLL soit chargée dans sa bonne version. Ce qui n’est pas possible directement avec DllImport().

Continuer la lecture de P/Invoke : utiliser une DLL native 32bits ou 64bits en fonction de la plateforme en mode « ANY CPU »

ASP.NET MVC : binding de modèle à « null »

ASP.NET MVC : binding de modèle à « null »

Petit rappel des règles de binding de modèle en ASP.NET MVC pour éviter de perdre des heures, comme je viens de le faire 😉

Soit notre modèle :

public class Hardware
{
  public int ID{ get; set; }
  public String Manufacturer { get; set; }
  public String Model { get; set ;}
}

Notre action dans votre contrôleur:

[HttpPost]
public ActionResult Update(Hardware model)
{
  if(ModelState.IsValid){
    // ...
  }
  return View(model);
}

Lorsque que vous postez votre formulaire, votre modèle est null.

Cela est du au fait que le nom de votre argument représentant votre modèle est le même que celui d’une des propriétés de votre modèle.

Dans notre cas c’est model vs Hardware.Model. En effet la priorité du binder est de mapper les éléments d’un formulaire vers les arguments de même nom. Dans notre cas Hardware.Model est une chaîne, et l’argument model est un Hardware qui n’est pas compatible avec une chaîne donc notre model est null.

Nous n’avons qu’a modifier le nom de notre argument hardwareModel par exemple, et notre modèle est de nouveau bindé correctement.

A bientôt,

Yanos

C# : Service windows en mode console pour le débogage et l’administration

C# : Service windows en mode console pour le débogage et l’administration

Lorsque l’on développe des services Windows en .Net nous sommes très vite confronté au problème du débogage.

De plus nous devons régulièrement démarrer, arrêter le service, voir l’installer et le désinstaller. Toutes ces actions nécessitent d’utiliser différentes lignes de commandes (installutil, net start, etc.).

Je vous propose dans cet article de transformer votre Service Windows en mode console pour vous permettre de déboguer un peu plus facilement, ainsi que gérer tous les mécanismes de manipulation du service au travers des paramètres de lignes de commandes, et ainsi simplifier sa gestion.

Continuer la lecture de C# : Service windows en mode console pour le débogage et l’administration

Transtypage de valeurs avec la sérialisation XDocument

Transtypage de valeurs avec la sérialisation XDocument

Depuis sa version 4.0, le Framework .Net nous fourni une nouvelle librairie pour gérer les documents XML: System.Linq.XDocument.

Cette librairie et plutôt conçue pour fonctionner avec LINQ (comme son espace de nom nous l’indique).

Elle permet de créer plus rapidement des documents, de parcourir avec des requêtes LINQ. En revanche on perd le standard DOM ainsi que le XPath.

L’une des particularité de XDocument est que l’on peut lui transmettre des objets comme contenu et il s’occupe de les convertir en valeur de noeud ou d’attribut. L’inverse est également vrai, on peut obtenir une valeur depuis un noeud ou un attribut directement en transtypant. Ces mécanismes nous permettent de sérialiser/désérialiser rapidement un fichier XML quand on ne peut pas utiliser les mécanismes de sérialisation XML du .Net.

Continuer la lecture de Transtypage de valeurs avec la sérialisation XDocument

Soyons énumérables – Partie 3

LINQ et les énumérables à la chaîne

LINQ est un language de requêtage intégré au language C# ou VB.Net, le propos de cet article n’est pas d’expliquer LINQ en lui-même mais son comportement avec les énumérables. Pour plus d’informations sur LINQ je vous renvoie à la documentation officielle.

Continuer la lecture de Soyons énumérables – Partie 3