OVH Cloud OVH Cloud

References aux librairies

3 réponses
Avatar
Didier Gentil
Bonjour,
lorsque je compile le code suivant en ligne
de commande ( csc MonProg1.cs ) le r=E9sulat
est parfait:
//**************************************
using System;
using System.Windows.Forms;

class DidierTest1
{
public static void Main()=20
{
Form toto=3Dnew Form();
toto.ShowDialog();
}
}
//**************************************
Mais lorsque je colle le m=EAme code dans
l'environnement VS.NET il me faut ajouter
la r=E9f=E9rence system.windows.forms dans la fen=EAtre de=20
projet pour que cel=E0 fonctionne.
Pour quelle raison la compilation "sous DOS" peut se
passer de cette r=E9f=E9rence ?

Merci

3 réponses

Avatar
Julien Bakmezdjian [MS]
Bonjour,

Lorsque vous utilisez la commande csc, le compilateur utilise une liste de
référence par défaut spécifiée dans le fichier csc.rsp. Ce fichier inclut
System.Windows.Forms.dll.
Lorsque vous compilez depuis VS, la ligne de commande utilisée emploie
l'option /noconfig qui empêche l'utilisation de ces références par défaut. A
la place, VS ajoute l'option /reference avec la liste des références du
projet.

Voir :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cscomp/html/vcrefiiimportmetadatafromfilelist.asp

Cordialement,

Julien

"Didier Gentil" a écrit dans le
message de news:73cb01c48434$80413760$
Bonjour,
lorsque je compile le code suivant en ligne
de commande ( csc MonProg1.cs ) le résulat
est parfait:
//**************************************
using System;
using System.Windows.Forms;

class DidierTest1
{
public static void Main()
{
Form toto=new Form();
toto.ShowDialog();
}
}
//**************************************
Mais lorsque je colle le même code dans
l'environnement VS.NET il me faut ajouter
la référence system.windows.forms dans la fenêtre de
projet pour que celà fonctionne.
Pour quelle raison la compilation "sous DOS" peut se
passer de cette référence ?

Merci
Avatar
Didier Gentil
Merci, effectivement.
Cependant je ne comprends alors pas pourquoi le source
suivant ne compile pas sous "Dos":
//************************************
class Prog2
{
public static void Main()
{
Form toto=new System.Windows.Forms.Form();
toto.ShowDialog();
}
}
//************************************
( pas de clause using )

-----Message d'origine-----
Bonjour,

Lorsque vous utilisez la commande csc, le compilateur


utilise une liste de
référence par défaut spécifiée dans le fichier csc.rsp.


Ce fichier inclut
System.Windows.Forms.dll.
Lorsque vous compilez depuis VS, la ligne de commande


utilisée emploie
l'option /noconfig qui empêche l'utilisation de ces


références par défaut. A
la place, VS ajoute l'option /reference avec la liste des


références du
projet.

Voir :
http://msdn.microsoft.com/library/fre/default.asp?


url=/library/FRE/cscomp/html/vcrefiiimportmetadatafromfilel
ist.asp

Cordialement,

Julien

"Didier Gentil" a


écrit dans le
message de news:73cb01c48434$80413760$
Bonjour,
lorsque je compile le code suivant en ligne
de commande ( csc MonProg1.cs ) le résulat
est parfait:
//**************************************
using System;
using System.Windows.Forms;

class DidierTest1
{
public static void Main()
{
Form toto=new Form();
toto.ShowDialog();
}
}
//**************************************
Mais lorsque je colle le même code dans
l'environnement VS.NET il me faut ajouter
la référence system.windows.forms dans la fenêtre de
projet pour que celà fonctionne.
Pour quelle raison la compilation "sous DOS" peut se
passer de cette référence ?

Merci


.



Avatar
Julien Bakmezdjian [MS]
Didier,

Les références indiquées au compilateur (références par défaut ou
explicites) permettent de trouver les classes dans d'autres assemblys à
partir de leur nom complet.

Lorsque vous employez la classe 'Form', vous utilisez en fait la classe
'System.Windows.Forms.Form'. Avant la compilation, tous les 'Form' sont donc
remplacés par 'System.Windows.Forms.Form'... si l'on a bien précisé 'using
System.Windows.Forms'. Le programme peut ensuire être compilé car
System.Windows.Forms.Form est une classe que le compilo connaît : elle se
trouve dans une des références indiquées. S'il n'y a pas de using qui permet
de transformer le simple 'Form' en 'System.Windows.Forms.Form', le
compilateur sera perdu, car la classe 'Form' tout court n'est définie dans
aucune assembly.

Dans votre code sans using, vous avez tout simplement oublié de transformer
explicitement le 'Form' de :
Form toto=new System.Windows.Forms.Form();
Essayez donc :
System.Windows.Forms.Form toto=new System.Windows.Forms.Form();

Cordialement,

Julien



"Didier Gentil" a écrit dans le
message de news:04aa01c48450$c539b4c0$
Merci, effectivement.
Cependant je ne comprends alors pas pourquoi le source
suivant ne compile pas sous "Dos":
//************************************
class Prog2
{
public static void Main()
{
Form toto=new System.Windows.Forms.Form();
toto.ShowDialog();
}
}
//************************************
( pas de clause using )

-----Message d'origine-----
Bonjour,

Lorsque vous utilisez la commande csc, le compilateur


utilise une liste de
référence par défaut spécifiée dans le fichier csc.rsp.


Ce fichier inclut
System.Windows.Forms.dll.
Lorsque vous compilez depuis VS, la ligne de commande


utilisée emploie
l'option /noconfig qui empêche l'utilisation de ces


références par défaut. A
la place, VS ajoute l'option /reference avec la liste des


références du
projet.

Voir :
http://msdn.microsoft.com/library/fre/default.asp?


url=/library/FRE/cscomp/html/vcrefiiimportmetadatafromfilel
ist.asp

Cordialement,

Julien

"Didier Gentil" a


écrit dans le
message de news:73cb01c48434$80413760$
Bonjour,
lorsque je compile le code suivant en ligne
de commande ( csc MonProg1.cs ) le résulat
est parfait:
//**************************************
using System;
using System.Windows.Forms;

class DidierTest1
{
public static void Main()
{
Form toto=new Form();
toto.ShowDialog();
}
}
//**************************************
Mais lorsque je colle le même code dans
l'environnement VS.NET il me faut ajouter
la référence system.windows.forms dans la fenêtre de
projet pour que celà fonctionne.
Pour quelle raison la compilation "sous DOS" peut se
passer de cette référence ?

Merci


.