2008-11-13 9 views
2

Il semble que le compilateur d'exécution ne supporte pas le même langage que le compilateur de ligne de commande, donc si vous voulez utiliser des expressions lambda, des méthodes d'extension ou LINQ, vous êtes bloqué.Le compilateur d'exécution .Net prend-il en charge C# 3.0?

Il y a plus de détails ici:

http://metadatalabs.com/blog/

Est-ce exact ou est-il un travail autour? (Short de fraie le compilateur de ligne de commande, bien sûr.)

+0

Pourquoi le spawning du compilateur de ligne de commande n'est-il pas une option? Il semble qu'une solution valide du compilateur d'exécution refuse de fonctionner. – nlaq

+0

Le client devrait installer les outils de ligne de commande pour que notre logiciel fonctionne. C'est un fardeau pour le client et un problème de configuration, mais s'il n'y a pas d'autre option, c'est ce que nous devrons faire. –

Répondre

1

blog de ce gars semble avoir la réponse

CodeDomProviders

On dirait les paramètres par défaut de l'instance, il retourne à 2,0.

Cela semble être une technique assez délirante. Quelque part, Paul Graham pleure.

0

Je havent essayé, mais ça semble fou ..

Dans l'avenir qui ne sera pas un problème, puisque l'équipe .NET sont va avoir le compilateur C# disponible en tant que service, ce qui signifie que vous pouvez travailler avec le vrai compilateur C# dans votre code. Jetez un oeil à cette vidéo:

http://channel9.msdn.com/pdc2008/TL16/

2

Je me sers de cela, et il semble fonctionner lors de la compilation en utilisant .Net 3,5

CodeDomProvider provider = new CSharpCodeProvider(new Dictionary<string, string> { { "CompilerVersion", "v3.5" } }); 
2

Jetez un oeil à la documentation du CSharpCodeProvider constructor:

La valeur est providerOptions obtenu à partir de l'élément dans le fichier de configuration. Vous pouvez identifier la version du CSharpCodeProvider que vous souhaitez utiliser par spécifiant l'élément , fournissant « CompilerVersion » comme le nom de l'option, et fournir le numéro de version (par exemple, « v3.5 ») comme valeur d'option. Vous devez précéder du numéro de version avec un minuscule "v".

Questions connexes