La construction du projet de bibliothèque de classes portable dans le serveur de génération échoue

J’ai récemment ajouté des projets personnalisés de bibliothèque de classes Portable à une application construite dans un serveur de génération. La compilation fonctionnait bien, mais après cela, elle a cessé de fonctionner et affiche les messages suivants:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (983, 5): avertissement MSB3644: Les assemblys de référence pour l’infrastructure “.NETPortable, Version = v4.0, Profile = Profile136” n’étaient pas a trouvé.

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (1578, 5): avertissement MSB3270: il y avait une incompatibilité entre l’architecture de processeur du projet en cours de construction “MSIL” et l’architecture de processeur de la référence “C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ mscorlib.dll”, “AMD64”.

erreur CS0234: Le nom de type ou d’espace de noms ‘Linq’ n’existe pas dans l’espace de noms ‘Système’ (il manque une référence d’assembly?)

Les spécifications du serveur de construction:

  • Windows Server 2008 R2 Standard
  • TeamCity 8.0.4
  • .NET 4.5
  • Outils de bibliothèque de classes portables (comme conseillé ici )
  • SDK Silverlight 5

La solution est une application .NET 4.0 et les projets portables visent uniquement .NET4.0 + e Silverlight 5. cibles portables

J’ai vérifié ma machine de développement (Windows 8, Visual Studio 2012). Il existe bien un dossier “C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework.NETPortable \ v4.0 \ Profile \ Profile136” (en fait, les profils pour .NET 4.0 vont jusqu’à 158). Sur la machine de construction, cependant, il n’existe que des dossiers pour les profils jusqu’à 131.

Est-ce que Portable Class Library Tools est à jour? Il semble manquer l’installation de profils pour les plates-formes les plus récentes.

METTRE À JOUR

J’ai copié le “.NETPortable \ v4.0 \ Profile \ Profile136” de ma machine de développement sur le serveur de génération, et maintenant l’application est générée avec succès. Je voudrais toujours savoir pourquoi l’installation des outils de la bibliothèque de classes portable ne fonctionne pas.

Une solution plus générale et élégante consiste à installer les derniers assemblys de référence de la bibliothèque portable Microsoft .NET. Cela installera profile138 parmi beaucoup d’autres.

Le ou les installateurs autonomes peuvent être trouvés à l’adresse suivante:

  • 4.6 (juin 2014) :

Copier le profil souhaité (il est explicite dans le message d’erreur) de la machine de développement sur le serveur de construction, après l’installation des outils de bibliothèque de classes portable , a permis à ma génération de fonctionner.

Apparemment, la bibliothèque de classes portable, dans sa version actuelle, n’inclut pas les profils portables les plus récents.

Si quelqu’un connaît un moyen plus moderne d’obtenir des profils portables sur un serveur de build, autre que l’installation de VS ou la copie manuelle, j’aimerais vraiment le savoir.

METTRE À JOUR

Chemin, sur ma machine dev, du dossier à copier sur la machine serveur (le chemin sur le serveur était le même):

 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136 

Profile136 est venu avec la version du pack de ciblage de bibliothèque portable faisant partie du kit de développement logiciel Phone SDK 8.0 (ou d’une mise à jour ultérieure de VS pour VS 2012). La version du pack de ciblage que vous utilisiez est plus ancienne.