C#

Visual Studio : erreur CS8357

Dans mes projets Visual Studio j'aime bien utiliser "1.0.*" dans l'attribut AssemblyVersion pour que le numéro de build et de révision s'incrémentent automatiquement à chaque compilation. Mais dans les dernières versions, si on crée un projet et qu'on vient modifier la valeur par défaut ("1.0.0.0") pour la remplacer par "1.0.*", on a l'erreur suivante à la compilation :

Etiquettes:

Sentry client for .NET 2.0

Logo Sentry

I'm a big fan of the Sentry service which is used to send error reports.

Each time an unexpected error occurs in one of my applications, a certain amount of information is collected (exception type and message, call stack, operating system version, user name...) then sent to Sentry's servers.

Etiquettes:

Insertion rapide des attributs [NotNull] et [CanBeNull] avec ReSharper 2017.2

La dernière version de ReSharper propose un nouveau assistant de frappe qui m'est particulièrement utile dans ma lutte à mort ;-) avec les références nulles. Il suffit d'appuyer sur ! ou ? juste derrière le nom d'un type ou d'un argument pour insérer un attribut [NotNull] et [CanBeNull].

Si on appuie une deuxième fois, un test et un déclenchement d'exception comme celui ci :

Etiquettes:

Déconstruction et dictionnaires avec C# 7.0

Les dictionnaires sont une structure de données bien pratique dans certaines situations, mais j'ai toujours trouvé qu'ils nuisaient un peu à la lisibilité du code.

Dans l'exemple suivant, dans la boucle on ne sait pas exactement ce que représente la clé et la valeur. Bien évidemment le code ici est très court donc on le comprend assez facilement mais sur du code réel, ça n'est pas toujours évident.

Etiquettes:

Exécuter en tant qu'administrateur et Marshal.GetActiveObject

Aujourd'hui, en examinant un problème sur l'application d'un client, je suis tombé sur quelque chose de bien étrange.

L'application tente de se connecter à AutoCAD en utilisant Marshal.GetActiveObject de façon à récupérer le nom du document actif comme je l'avais expliqué dans cet article. Mais il semblerait que l'application ne fonctionne pas sur certaines machines.

Etiquettes:

Compilation de Repetier-Host 0.84

Le logo Repetier-Host

Pour essayer de comprendre comment fonctionne le pilotage d'une imprimante, je me suis dit que ce serait bien d'examiner le code de Repetier-Host, qui était en Open Source jusqu'à sa version 0.84. Hot-World, la société allemande qui développe le logiciel, a décidé depuis de changer de licence et de ne plus partager son code.

Etiquettes:

Paramètres booléens

En général, il est préférable d'éviter d'écrire une méthode avec des paramètres booléens car ce n'est pas très lisible. Supposons par exemple qu'on écrit une méthode qui recherche des entités, avec un paramètre qui permet d'exclure les cercles de la recherche :

IList<Entity> FindEntities(bool ignoreCircles)
{
  //...
}

Quand on appelle la méthode, ça donne ceci :

Utiliser DebuggerDisplay sur des types externes

L'attribut DebuggerDisplay est très utile pour afficher une représentation textuelle explicite d'un type. C'est très utile surtout pour les collections. Pour vos propres types, il suffit d'ajouter l'attribut à votre déclaration de classe. Par exemple:

[DebuggerDisplay("{FirstName} {LastName}")]
public class Person {
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

Différences entre C# et Java

Le logo Java

Cet année, j'ai décidé de me mettre sérieusement au développement pour tablette puisque je suis de plus en plus sollicité sur le sujet. Pour l'occasion, je me suis remis au Java que j'avais un peu abordé au siècle dernier pour pouvoir développer sur Android. J'en profite donc pour noter les différences avec le C# qui est le langage que j'utilise au quotidien.

Revit - Traductions approximatives

La traduction en Français de Revit laisse à désirer. Par exemple pour les motifs, on a plusieurs options pour l'orientation. En anglais, ces options se nomment :

  1. Orient to view
  2. Keep readable
  3. Align with element

Options pour l'orientation des motifs en Anglais

Et bien en Français ça donne :

Etiquettes:

Pages

Subscribe to RSS - C#