IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Version de csc.exe


Sujet :

C#

  1. #1
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 494
    Points : 3 129
    Points
    3 129
    Par défaut Version de csc.exe
    Bonjour et bonne semaine à toutes et à tous,

    Je suis toujours dans mes soucis de compilation en ligne de commande.

    Après avoir bien étudié tout ça et suivi les conseils donnés ici, je me suis fais 2 fichiers .bat de compilation.

    Le premier utilise msbuild.exe sur les fichiers .csproj et fonctionne sans problème.

    Pour essayer de mieux comprendre le fonctionnement de csc.exe, j'ai voulu tenter d'utiliser directement le compilo.

    Le second utilise csc.exe et là, problème que j'expose maintenant.

    Dans les variables système, l'installation du framework 3.5 a ajouté le chemin
    C:\WINDOWS\Microsoft.NET\Framework\v3.5

    Dans le path utilisateur, pour avoir accès à csc.exe de n'importe répertoire, j'ai ajouté
    C:\Windows\Microsoft.NET\Framework\v2.0.40607

    Mon projet est écrit avec C# 2008.

    Quand je me positionne dans le dossier concerné et que j'utilise csc.exe sur mon projet, ça marche parfaitement sauf que la ligne de commande semble utiliser la version 3.5 de de .net, alors que mon projet doit être compilé pour .net 2.0.

    Compilateur Microsoft (R) Visual C# 2008 version 3.5.21022.8
    pour Microsoft (R) .NET Framework version 3.5
    Copyright (C) Microsoft Corporation. Tous droits réservés.

    Si j'utilise le chemin complet
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe

    le csc pour .net 2.0 est bien utilisé.

    Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.1433
    pour Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
    Copyright (C) Microsoft Corporation 2001-2005. Tous droits réservés.

    Mais je me ramasse des dizaines d'erreur de compilation.

    La ligne indique qu'elle utilise la version "Visual C# 2005 Compiler" , alors que j'ai la version 2008 installée.

    Est-ce tout ça vous semble logique ?
    Quel csc.exe devrais-je utiliser pour compiler mon projet vs 2008 en .net 2.0 ?


    Question subsidiaire: Existe il une solution générique pour savoir si un assembly ou un programme est compatible pour une version spécifique de .net ?

    Papy !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    v2.0.40607
    c'est quoi cette version ?? la version exacte pour le framework 2.0 est la 2.0.50727

    sinon, qu'est-ce que tu obtiens comme erreurs de compilation ? tu es sûr que ton programme ne contient pas du code spécifique à C# 3 (des fonctionnalités Linq par exemple) ?

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 494
    Points : 3 129
    Points
    3 129
    Par défaut
    2.0.50727 , c'est ça, j'ai du faire un copier-coller foireux

    Les erreurs sont du genre:

    Process.cs(23,59): error CS1026: ) attendue
    Process.cs(23,59): error CS1002: ; attendu
    Process.cs(25,44): error CS1002: ; attendu
    Process.cs(25,44): error CS1525: Terme d'expression non valide ','
    Process.cs(25,45): error CS1002: ; attendu
    Process.cs(26,41): error CS1002: ; attendu
    Process.cs(26,41): error CS1525: Terme d'expression non valide ','
    Process.cs(26,42): error CS1002: ; attendu
    etc.

    sur une syntaxe propre à c# 2008 lors de la construction d'un objet où l'on définit des propriétés dans le constructeur, entre {}


    autre genre d'erreur:

    Commons.cs(159,30): error CS0501: 'processes.TestEventArgs.Id.set' doit déclarer un corps, car il n'est pas marqué comme abstract ni extern
    Commons.cs(164,35): error CS0501: processes.InfoEX2TestEventArgs.InfoDatas.get' doit déclarer un corps, car il n'est pas marqué comme abstract ni extern
    Commons.cs(164,40): error CS0501: 'processes.InfoEX2TestEventArgs.InfoDatas.set' doit déclarer un corps, car il n'est pas marqué comme abstract ni extern

    Donc là, idem pour une syntaxe propre à C# 2008 sur les propriétés où l'on n'utilise que {get; set;}

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    sur une syntaxe propre à c# 2008 lors de la construction d'un objet où l'on définit des propriétés dans le constructeur, entre {}
    ...
    Donc là, idem pour une syntaxe propre à C# 2008 sur les propriétés où l'on n'utilise que {get; set;}
    Ce sont des syntaxes spécifiques à C# 3, il faut donc utiliser le compilateur C# 3...

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 494
    Points : 3 129
    Points
    3 129
    Par défaut
    ça, ok mais quand le lancement en ligne de commande indique:

    Compilateur Microsoft (R) Visual C# 2008 version 3.5.21022.8
    pour Microsoft (R) .NET Framework version 3.5

    Je me dis (peut-être à tort) que mon programme ne sera pas compatible .net 2.0.

    J'ai peur de ne pas avoir compris un truc:

    Est-ce que le résultat de la compilation sera fonction du code utilisé seulement ou différent selon le compilateur utilisé ?
    Par exemple, si je n'utilise que des assembly compatible .net 2.0 avec mon code, est-ce que le compilateur importe peu dans la compatibilité finale avec le framework installé sur la machine qui utilisera le soft ?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Est-ce que le résultat de la compilation sera fonction du code utilisé seulement ou différent selon le compilateur utilisé ?
    Par exemple, si je n'utilise que des assembly compatible .net 2.0 avec mon code, est-ce que le compilateur importe peu dans la compatibilité finale avec le framework installé sur la machine qui utilisera le soft ?
    Le CLR (la "machine virtuelle" de .NET) n'a pas changé entre le framework 2.0 et le 3.5, donc le MSIL généré par le compilateur 3.5 est compatible avec le CLR 2.0. Si ton programme n'utilise que des assemblies qui existent en 2.0, ça devrait fonctionner avec le framework 2.0. (donc exit System.Core et autres assemblies liés à Linq)

  7. #7
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 494
    Points : 3 129
    Points
    3 129
    Par défaut
    ah ben c'est plus clair comme ça :-)

    Donc, ce n'est qu'une question d'assembly utilisé.

    Merci grand chef !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VB 2005 version de l'exe
    Par cricrides dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/02/2008, 11h32
  2. Incrémentation du numéro de version (dll et exe) en C
    Par biglolo dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 07/02/2007, 18h09
  3. [VB6] numero de version d'un exe
    Par Sytchev3 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/03/2006, 11h36
  4. Récuperer le N° de version de l'exe
    Par zarbouine dans le forum EDI
    Réponses: 4
    Dernier message: 02/12/2005, 18h49
  5. Réponses: 3
    Dernier message: 17/10/2005, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo