Je souhaite utiliser C # 6 dans mon projet (propagation nulle, autres fonctionnalités).
J'ai installé VS 2015 sur mon PC et cela fonctionne à merveille et crée un code de test comme
var user = new SingleUserModel(); //all model fields are null
var test = user.User?.Avatar?["blah"];
Mais lorsque je pousse mon projet vers le référentiel et que CI commence à le générer, la génération échoue en raison d'une non prise en charge ?
.
J'ai également installé VS2015 sur le serveur CI mais il semble qu'il ne l'utilise pas. Que puis-je faire?
CI - CruiseControl .NET Construit avec C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
Réponses:
Assurez-vous d'appeler:
C'est la version de MsBuild fournie avec Visual Studio 2015 et appelle le compilateur C # qui comprend cela. Vous pouvez obtenir cette version de MsBuild sur votre système en installant n'importe quelle édition de Visual Studio 2015 ou en installant les outils autonomes Microsoft Build 2015 .
L'ajout d'une référence au package NuGet suivant forcera également l'utilisation du nouveau compilateur:
Veuillez noter qu'Install-Package choisira la dernière version disponible qui peut ne pas être celle que vous recherchez. Avant d'installer, veuillez consulter les notes de publication et les dépendances pour résoudre le problème sous-jacent avec la version traitée, qui dans ce cas, était plus spécifique à VS 2015.
Donc pour Visual Studio 2015:
la source
Vous pouvez d'ailleurs également installer les "Microsoft Build Tools 2015" au lieu de VS2015 sur votre serveur de build.
https://www.microsoft.com/en-us/download/details.aspx?id=48159
Il installe MSBuild sur le même chemin:
la source
Redistributables and Build Tools
section.Cela fonctionne probablement déjà, mais cela pourrait aider quelqu'un d'autre à l'avenir. Je suis tombé sur cette question récemment et cela m'a fait avancer dans la bonne direction et a finalement conduit à une solution.
Une autre solution possible consiste à mettre à jour manuellement vos fichiers de projet pour cibler la version MSBuild avec laquelle vous souhaitez que vos projets soient créés.
J'ai récemment effectué une mise à jour du serveur de build TeamCity et j'y ai déjà installé Microsoft Build Tools 2015. Je pensais que tout était en place sur le serveur de build, j'avais ma solution ciblant C # 6.0 et j'avais tous les projets ciblant .net 4.6.1. Comme vous, tout avec du code spécifique à C # 6.0 est parfaitement construit dans mon environnement local, mais mon serveur de build TeamCity n'aimait rien de tout cela.
Comme mentionné par d'autres, j'ai essayé d'utiliser le package NuGet Microsoft.Net.Compilers. La dernière version de celui-ci permettait à la construction de fonctionner sur mon serveur de construction, mais elle ne me permettait pas de publier mon code localement (une exigence de la mienne). Les versions antérieures de ce package NuGet me permettaient de publier, mais la compilation ne fonctionnerait pas.
Ce que j'ai trouvé que je devais faire était finalement de modifier chaque fichier de projet dans ma solution pour cibler spécifiquement la version MSBuild qui pourrait gérer le code C # 6.0. Dans chacun de mes fichiers de projet, j'ai trouvé une ligne similaire à la ligne suivante:
le composant clé de cette ligne étant la partie ToolsVersion de celle-ci. J'ai simplement changé cette ligne sur mes fichiers de projet pour lire ce qui suit:
La différence ici était que je ciblais la version 14, pas 4. La version 14.0 correspond à Build Tools 2015. En changeant cela, mon serveur de build TeamCity a utilisé la version MSBuild correcte et a pu créer mon code C # 6.0.
J'ai également dû mettre à jour manuellement le nœud xml TargetFrameworkVersion de celui-ci pour utiliser 4.6.1 parce que VS2015 ne faisait pas quelque chose de bien et a gâché ma version locale, mais ce n'est pas pertinent ici.
S'il vous plaît, quelqu'un me corrige si je me trompe, mais juste pour référence, je pense que les numéros de version ressemblent à ceci:
4,0 = VS2012
12,0 = VS2013
14,0 = VS2015
15,0 = VS2017
Je pense que si vous vouliez utiliser .net 4.7, vous devrez installer les outils de construction 2017 et vos projets ciblant 15,0 au lieu de 14,0, mais je ne l'ai pas vérifié.
la source