49 votes

MSBuild sur TeamCity Server ne peut pas trouver AL.exe

J'ai un problème sur mon TeamCity CI serveur de build où, lors de la compilation j'obtiens l'erreur suivante:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2342, 9): erreur MSB3086: Tâche impossible de trouver "AL.exe" à l'aide de la SdkToolsPath "" ou la clé de registre "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A". Assurez-vous que le SdkToolsPath est définie et l'outil existe dans le processeur correct emplacement spécifique en vertu de la SdkToolsPath et que le kit de développement Microsoft Windows est installé

J'ai trouvé des rapports similaires il y a un an, quand les gens ont été mise à niveau .NET 3.5, par exemple cette un. Dans ce cas, l'installation de la dernière SDK résolu le problème, cependant j'ai déjà installé la dernière version du SDK (kit de développement Microsoft Windows pour Windows 7 et .NET Framework 4) sur mon serveur de build. MSBuild outils sont tous là sur le serveur, dans un dossier appelé

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319

et AL.exe existe en

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Outils

Toutefois, la clé de registre mentionné dans le message d'erreur n'existe pas. Donc, il semble comme il ya quelque chose de mal avec l'installation/configuration de MSBuild. Cette erreur ne se produit que pour des projets qui ont intégré des ressources, ce qui nécessite AL.exe.

S'il vous plaît, quelqu'un a résolu ce problème ou avez des indices quel est le problème?

54voto

Andy Pook Points 556

Comme vous avez installé le dernier SDK (je suppose que c'est v7.1)

  1. Allez à "Microsoft Windows SDK v7.1" dans le menu Démarrer.
  2. Sélectionnez "Invite de commandes Windows SDK 7.1" et entrez
  3. > configuration cd
  4. > WindowsSdkVer -version: v7.1

Cela indiquera à msbuild d'utiliser cette version des outils sans avoir à faire une édition de registre effrayante.

6voto

Taliesin Points 221

Vous devez également appliquer le correctif de registre suivant pour mettre à jour msbuild afin qu'il pointe vers les valeurs du sdk V7.1.

 Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0]
"MSBuildToolsPath"="C:\\WINDOWS\\Microsoft.NET\\Framework\\v4.0.30319\\"
"MSBuildToolsRoot"="C:\\WINDOWS\\Microsoft.NET\\Framework\\"
"FrameworkSDKRoot"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1@InstallationFolder)"
"MSBuildRuntimeVersion"="4.0.30319"
"SDK40ToolsPath"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1\\WinSDK-NetFx40Tools-x86@InstallationFolder)"
"SDK35ToolsPath"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v7.1\\WinSDKNetFx35Tools@InstallationFolder)"
"MSBuildToolsPath32"="$(Registry:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\4.0@MSBuildToolsPath)"
 

4voto

poolfoot Points 18

J'ai eu le même problème là-bas, voici ma réponse simple à cette question.

Après avoir installé Microsoft Windows SDK 7.1 sur le serveur TeamCity.

Dans Regedit Changer cette clé

        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\SDK40ToolsPath
 

à

         $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft          
        SDKs\Windows\v7.1\WinSDK-NetFx40Tools-x86@InstallationFolder)
 

Regardez la photo, j'ai eu mon premier projet TeamCity Building avec ça! (était v7.0a) J'ai eu une image, pour montrer comment c'était simple.

 > Oops! Your picture couldn't be submitted because:
> 
> We're sorry, but as a spam prevention mechanism, new users aren't
> allowed to post images. Earn more than 10 reputation to post images.
 

3voto

Tim Long Points 4435

J'ai un moyen simple, efficace correctif.

Le problème semble être que la version des outils livrés avec Visual Studio est la version 7.0 A, tandis que la version livrée avec le kit de développement logiciel Windows est la version 7.1. C'est très bien, mais MSBuild.exe est toujours à la recherche de la version 7.0, Une des clés de registre, ce qui n'existe pas. Ce doit être un bug!

La recherche dans ma base de registre, toutes les informations pour le V6.0 et V7.1 est présente et correcte. Donc ma solution est simple. J'ai créé un registre lien qui fait un alias de l'7.1 clés.

Il n'est pas possible de créer de registre liens en utilisant les outils intégrés, donc j'ai téléchargé un petit utilitaire appelé "regln' à partir d' ici.

C:>regln-x86.exe "\Registry\Machine\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" "\Registry \Machine\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1"

Le travail est accompli. MSBuild fonctionne à la perfection sur le TeamCity serveur.

0voto

adrianbanks Points 36858

Nous avons récemment eu ce problème en essayant d'obtenir notre .Net 4.0 construit de travail. Nous avons constaté que l'emplacement de al.exe avait changé entre l'emplacement de l'original MSBuild qui sont venus avec .Net 4.0 regarde, et Visual Studio SDK pour .Net 4.0 (qui a été publié plus tard).

Étant donné que la seule installation autonome du SDK outils disponibles est celui que nous avions déjà installé sans succès (celui que vous avez mentionné), la seule solution que l'on pouvait penser était de l'installation de Visual Studio sur les agents de build. Nous avons mis Visual Studio 2010 Express (pour garder l'installation aussi léger que possible) et le problème a disparu. Pas une jolie solution, mais il a fait un travail - installation de VS2010 installe également les outils du kit SDK de la version spécifique que MSBuild semble être à la recherche pour.

C'est un problème qui ne devrait pas se produire, mais il ne semble pas y avoir un moyen de le faire MSBuild regarder dans le bon place pour les outils, même autour de piratage dans le registre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X