36 votes

Erreur de ligne de commande MSBuild - Silverlight 4 SDK n'est pas installé

Ma ligne de commande MSBuild est la suivante :

msbuild e:\\code\\myProject.csproj /p:Configuration=Debug /p:OutputPath=bin/Debug /p:Platform=x86 /p:PlatformTarget=x86

Le projet se construit bien sur ma machine de développement dans VS2010 mais pas avec la commande ci-dessus. J'utilise Win 7 64 bits. Je reçois une erreur qui dit que je n'ai pas le SDK Silverlight 4 installé mais je l'ai. J'ai lu des articles indiquant qu'il fallait définir Platform=x86, mais en vain. Voici le message d'erreur dans son intégralité :

Microsoft (R) Build Engine Version 4.0.30319.1
\[Microsoft .NET Framework, Version 4.0.30319.1\]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 6/8/2010 4:03:38 PM.
Project "E:\\code\\dashboards\\MyProject2010\\MyProject2010.Web\\MyProject2010
.web.csproj" on node 1 (default targets).
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output fi
les are up-to-date with respect to the input files.
CoreCompile:
Skipping target "CoreCompile" because all output files are up-to-date with resp
ect to the input files.
CopyFilesToOutputDirectory:
  Copying file from "obj\\Debug\\MyProject.Web.dll" to "bin\\Debug\\MyProject.Web
  .dll".
  MyProject2010.web -> E:\\code\\dashboards\\MyProject2010\\MyProject2010.Web
  \\bin\\Debug\\MyProject.Web.dll
  Copying file from "obj\\Debug\\MyProject.Web.pdb" to "bin\\Debug\\MyProject.Web
  .pdb".
Project "E:\\code\\dashboards\\MyProject2010\\MyProject2010.Web\\MyProject2010
.web.csproj" (1) is building "E:\\code\\dashboards\\MyProject2010\\MyProject20
10.Client\\MyProject2010.Client.csproj" (2) on node 1 (GetXapOutputFile target(
s)).
C:\\Program Files (x86)\\MSBuild\\Microsoft\\Silverlight\\v4.0\\Microsoft.Silverlight
.Common.targets(104,9): error : The Silverlight 4 SDK is not installed. \[E:\\cod
e\\dashboards\\MyProject2010\\MyProject2010.Client\\MyProject2010.Client.cspr
oj\]
Done Building Project "E:\\code\\dashboards\\MyProject2010\\MyProject2010.Clie
nt\\MyProject2010.Client.csproj" (GetXapOutputFile target(s)) -- FAILED.

Done Building Project "E:\\code\\dashboards\\MyProject2010\\MyProject2010.Web\\
MyProject2010.web.csproj" (default targets) -- FAILED.

Build FAILED.

"E:\\code\\dashboards\\MyProject2010\\MyProject2010.Web\\MyProject2010.web.csp
roj" (default target) (1) ->
"E:\\code\\dashboards\\MyProject2010\\MyProject2010.Client\\MyProject2010.Clie
nt.csproj" (GetXapOutputFile target) (2) ->
(GetFrameworkPaths target) ->
  C:\\Program Files (x86)\\MSBuild\\Microsoft\\Silverlight\\v4.0\\Microsoft.Silverlig
ht.Common.targets(104,9): error : The Silverlight 4 SDK is not installed. \[E:\\c
ode\\dashboards\\MyProject2010\\MyProject2010.Client\\MyProject2010.Client.cs
proj\]

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.39

J'apprécie l'aide de chacun. Je vous remercie.

23voto

Paul Betts Points 41354

J'ai trouvé la solution - il y a un paramètre dans MSBuild qui permet de choisir l'environnement x64 ou x86 pour MSBuild (dans la même page où vous définissez les drapeaux de MSBuild). le régler sur x86 et tout fonctionnera.

21voto

The Senator Points 537

Si vous êtes arrivé ici à cause d'un problème de tfs2010 provoquant l'erreur ci-dessus (même si vous avez installé le SDK Silverlight 4), vous devez modifier votre modèle de processus de construction afin d'obtenir la même correction :

Allez dans l'onglet "Process", développez la section "3.Advanced" et localisez le deuxième paramètre en partant du bas ("MSBuild Platform") et réglez-le sur X86, ce qui demandera à l'agent de construction d'utiliser la variante x86 de MSBuild.

Cela a résolu mon problème en conjonction avec la réponse de Paul Betts ci-dessus.

20voto

seldary Points 1855

J'ai rencontré le même problème en cours d'exécution : C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

Il suffit de courir :
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe

4voto

Wesley Points 121

Le post de départ indique qu'il faut définir Target Platform à X86, mais ce n'est pas la solution pour le serveur de compilation.

Dans votre fichier de configuration de construction, il y a une option pour définir MSBuild Platform à X86. Vous pouvez trouver ce paramètre via : Processus -> 3.Advanced -> MSBuild Platform (par défaut, auto)

Le problème sous-jacent est que Silverlight ne supporte pas le 64 bits.

J'ai trouvé cette solution, qui fonctionne pour moi, sur : http://social.msdn.microsoft.com/Forums/en/msbuild/thread/20a742a1-b99c-4638-8590-9a9d6a95fb69

2voto

J'ai eu ce problème sur Windows 7 Ultimate 64bit edition en essayant de configurer le Windows 7 Phone SDK. Aucune combinaison d'installations/réparations de SDK/Toolkit ne fonctionnant pour moi, j'ai décidé d'investiguer un peu plus loin.

En plaçant un certain nombre de <Message /> dans mon fichier Microsoft.Silverlight.Common.targets, j'ai découvert que je n'avais pas d'entrée de registre dans Software \Microsoft\Silverlight\4.0. C'est le cas pour la section 32 bits et la section Wow6432Node.

Ainsi, les sorties de quelques cibles de construction qui découvrent où les frameworks sont stockés renvoyaient des blancs, ce qui faisait échouer un certain nombre d'autres cibles en cours de route. Plus précisément, les propriétés _FullFrameworkReferenceAssemblyPaths et TargetFrameworkDirectory n'étaient pas définies correctement.

Bien que cela soit totalement contraire à toutes les recommandations, j'ai contourné le problème en codant manuellement les valeurs dans le fichier .targets, comme suit :

<PropertyGroup>
    <_FullFrameworkReferenceAssemblyPaths>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0</_FullFrameworkReferenceAssemblyPaths>
    <TargetFrameworkDirectory>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone</TargetFrameworkDirectory>
</PropertyGroup>

Ce n'est pas quelque chose dont je suis particulièrement fier, mais c'est une nécessité si je veux progresser dans le développement. J'espère que cela aidera quelqu'un d'autre.

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