2009-09-29 9 views
3

Voici un problème intéressant qui m'a vraiment gratter la tête. J'ai un projet en cours de construction dans TeamCity. Cela fonctionne correctement jusqu'à ce qu'un développeur ajoute un fichier de ressources à l'un des projets avec des chaînes pour un autre paramètre régional. Il a ajouté le fichier .resx dans le dossier Propriétés à côté du fichier par défaut. Voici le message d'erreur du journal de construction:Échec de construction parce qu'il ne peut pas trouver AL.exe

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(2105, 9): 
error MSB3091: Task failed because "AL.exe" was not found, or the correct 
Microsoft Windows SDK is not installed. The task is looking for "AL.exe" in the "bin" 
subdirectory beneath the location specified in the InstallationFolder value 
of the registry key 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A. 
You may be able to solve the problem by doing one of the following: 
1) Install the Microsoft Windows SDK for Windows Server 2008 and .NET Framework 3.5. 
2) Install Visual Studio 2008. 
3) Manually set the above registry key to the correct location. 
4) Pass the correct location into the "ToolPath" parameter of the task. 

Il y a un certain nombre de choses ici que je ne peux pas établir. - Comment se fait-il qu'il trouve AL.exe pour le fichier .resx par défaut mais pas pour ce nouveau fichier? - Pourquoi regarde-t-il une clé de registre qui semble spécifique à Vista, lorsque la version est exécutée sur Server 2003?

Des idées?

Répondre

3

Problème résolu par l'installation de Windows SDK pour Windows Server 2008 et .NET Framework 3.5 SP1. Je ne comprends pas comment MSBuild est en décalage avec ses outils, peut-être que je ne découvrirai jamais la raison, mais l'installation de ce SDK a résolu le problème pour moi.

+1

J'ai eu le même problème sur la machine de développement et j'ai juste copié le al.exe de 6.1A à 6.0A et ai travaillé. L'installation du sdk n'a pas fonctionné. –

0

Vérifiez que msbuild de x86 est utilisé. Il devrait y avoir une option dans le runner de TeamCity.

Le VS2008 était-il installé sur la machine?

+0

Non, VS2008 n'a pas été installé. C'est un serveur de construction, pas un poste de travail de développement. –

0

Assurez-vous que le Kit de développement Windows est complètement installé sur le serveur. AL.exe (Assembly Linker) est inclus avec le SDK .NET (pas le runtime).

(j'ai le même problème sur mon serveur TFS avec ClickOnce, mais trop paresseux pour fixer)

+0

Corrigez-moi si je me trompe, mais AL.exe n'est-il pas utilisé pour construire le projet _every_? Si oui, pourquoi échoue-t-il seulement sur ce projet en ajoutant un fichier ressource? J'ai besoin de comprendre le mécanisme de défaillance avant de le réparer. –

+1

AL.exe est normalement utilisé avec des assemblages de satellites de liaison. – leppie

+1

Bien que le SDK ait été installé et AL.exe était présent, MSBuild le recherchait au mauvais endroit, à l'aide d'une clé de Registre qui n'existait pas. Il semble que MSBuild ait été mis à jour vers une version plus récente qui se penche sur la mauvaise clé de registre, tout en ignorant résolument la clé de registre plus ancienne, existante et correcte qui l'aurait permis de fonctionner. Quoi qu'il en soit, l'installation du SDK Server 2008 a fonctionné (même s'il s'agit d'un serveur 2003). –