2017-06-06 1 views
9

J'utilise l'interpolation de chaîne en utilisant $ dans mon code. Il se compile bien mais quand je vérifie mon code, le serveur de construction jette une erreur BC30037: Character is not valid. Voici un exemple d'utilisation de l'interpolation de chaînes:

dim r = New RadNode($"{acq.FormNo} - ${CInt(acq.TotalAmount)}", icon:=RadTreeIcons.RedTriangle) 

L'édition Visual Studio 2015 Entreprise est installée sur le serveur de construction.

Si je cours à partir de cette invite de commande:

C:\Program Files (x86)\MSBuild\14.0\Bin>MSBuild /tv:14.0 "Proj.sln", le code compile le fichier. Toutefois, si je change l'argument ci-dessus pour

C:\Program Files (x86)\MSBuild\14.0\Bin>MSBuild /tv:12.0 "Proj.sln", je reçois la même erreur

J'ai aussi fait ces changements:

j'ai mis la MSBuildArguments propriété à /p:VisualStudioVersion=14.0 et a également modifié le fichier TFSBuild.proj et changé cette ligne à <Project DefaultTargets="DesktopBuild" xmlns="schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="14.0">" mais le même problème se produit.

Modification du fichier (web vbproj) et modification de la version ToolSet à la version 14.0 à partir de la version 12.0. D'autres projets vb faisant partie de la solution ciblent toujours 12.0 mais sont compilés dans dll dans le cadre du projet web vb.

+0

Quelle construction utilisez-vous? XAML ou vNext construire? Pourriez-vous ajouter plus d'informations détaillées pour le dépannage, telles que le journal détaillé et votre environnement. –

+0

J'utilise la construction XAML. – Baahubali

+1

Hey @ Patrick-MSFT quelle version de msbuild XAML utilise-t-il pour construire et pouvez-vous définir la version comme vous pouvez dans la version vNext? Je me souviens que le dialogue de config de construction dans VS a un tas de paramètres pour msbuild, mais je ne me souviens pas s'il existe un moyen de définir le chemin utilisé par TFSBuild pour définir l'endroit où msbuild est exécuté ... Serait-ce le cas? exemple? –

Répondre

6

Réponse situé ici résolu mon problème:

BuildActivity ignores ToolsVersion

Pour ceux d'entre nous qui ne vivent pas à l'intérieur Pour créer des gabarits tous les jours voici les étapes qui ont fonctionné pour moi:

Trouve d'abord le gabarit associé à ta construction (si tu sais déjà où le trouver, saute quelques pas). Cliquez avec le bouton droit de la souris sur la définition de construction et sélectionnez Editer la définition de construction. Sélectionnez l'onglet Traiter et vous verrez le nom du modèle (probablement DefaultTemplate si vous ne l'avez pas personnalisé). À l'extrême droite, cliquez sur Afficher les détails pour voir le chemin du modèle.

enter image description here

Aller à l'onglet Accueil sous l'explorateur d'équipe et cliquez sur l'explorateur de contrôle Source enter image description here

Trouver le fichier modèle et cliquez deux fois pour le modifier. Il devrait apparaître dans une vue graphique comme celle-ci. Faites défiler jusqu'à ce que vous trouverez Exécuter MSBuild pour le projet enter image description here

Cliquez sur ce point qui apportera immédiatement les propriétés enter image description here

Cliquez sur la petite icône à droite - ne pas essayer de le taper en car » Probablement exploser et planter Visual Studio. Entrez CITATIONS ci-après "C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin" enter image description here

MAINTENANT POUR LA PARTIE

LE PLUS IMPORTANT Pour moi, la course MSBuild pour le projet était à deux endroits.

Donc, je viens de répéter les étapes ci-dessus dans les deux endroits, puis après avoir vérifié dans le fichier .xaml ma construction a finalement bien fonctionné.

Vous devrez peut-être recycler l'agent/le contrôleur à partir de l'outil TFS.

enter image description here

2

when i check in my code, the build server throws an error, semble que vous utilisez une version CI. Vous pouvez également essayer de mettre en file d'attente manuellement la construction. Et construisez votre code en local pour affiner si c'est lié à votre environnement TFS ou non.

Jetez également un coup d'œil à l'affichage des événements dans l'agent de construction/serveur, s'il y a quelques informations utiles.

L'erreur BC30037: Character is not valid sans TFxxxx peut être liée à votre code ou syntaxe.

  • Vérifiez si un caractère supplémentaire a été accidentellement inséré dans l'élément de programmation.
  • Vérifiez que l'élément de programmation est orthographié ou construit en utilisant uniquement des caractères qui sont valides pour ce genre d'élément

Character is not valid

+1

En regardant plus, on dirait que le serveur de construction utilise MsBuild 12 ou plus tôt pour faire la compilation et que vous msbuildez la version 14.0 ou supérieure pour construire l'interpolation de chaîne correctement. J'ai mis la propriété MSBuildArguments à /p:VisualStudioVersion=14.0 et j'ai aussi changé le fichier TFSBuild.proj et changé cette ligne en "" mais le même problème se produit. – Baahubali

+0

@Baahubali Désolé pour la réponse plus tard. C'est un vieux problème dans la construction de TFS XAML. Le modèle de processus pointe toujours vers la mauvaise version de msbuild 12.0 au lieu de 14.0 lors de la construction de .net4.6/C# 6.0. Il existe de nombreuses solutions à ce problème. Comme https://stackoverflow.com/questions/32659106/tfs-2013-building-net-4-6-c-sharp-6-0/32691755#32691755. Il semble que votre problème a été résolu. Content de cela, toujours mieux quand vous le réparez vous-même; comme vous comprenez comment cela fonctionne! :) –