84 votes

v11.0 \WebApplications\Microsoft.WebApplication.targets n'a pas été trouvé alors que le fichier fait référence à la version 10

Tout d'abord, un peu d'histoire. Fin 2012, nous avons migré notre solution vs2008 vers vs2010 mais nous visons toujours .NET 3.5. (Je ne connais rien d'autre que le dernier et le meilleur ici !).

Nous n'avions pas eu de problèmes avec cette configuration jusqu'à ce que, il y a quelques semaines, des personnes aient commencé à obtenir ces erreurs :

"foo.csproj" (Rebuild target) (16:5) ->
  C:\...\foo.csproj(142,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

Ce qui est intéressant, c'est que si vous regardez le fichier de projet, il fait référence à v10, ce qui est logique car nous n'utilisons pas Visual Studio 2012.

Cette erreur a touché plusieurs d'entre nous en même temps et même sur des branches de code plus anciennes qui n'ont pas été modifiées depuis des mois.

Je soupçonne qu'une mise à jour a été poussée sur nos machines et a brouillé les choses, mais je ne sais pas quoi faire à ce sujet.

La solution à court terme a été d'installer VS 2012 et de ne pas l'utiliser, mais j'espère quelque chose d'un peu plus propre que cela.

6voto

user2964808 Points 123

J'ai eu le même problème. Je l'ai résolu en appliquant les solutions énumérées ci-dessus. Le problème est dû au fait que la version appropriée de Visual Studio Tools (BuildTools) n'est pas disponible sur le serveur de construction. Comme indiqué ci-dessus, ce problème peut être résolu en installant BuildTools, mais ce n'est pas l'option dans mon cas.

Voici une autre alternative : utiliser Nuget

Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3

Identifiez le projet de démarrage et installez les web.targets en fonction de la version de Visual Studio utilisée. Les fichiers suivants seront modifiés, ce qui inclut les changements requis

Dans packages.config :

<package id="MSBuild.Microsoft.VisualStudio.Web.targets" version="14.0.0.3" targetFramework="net45" />

Dans .csproj :

<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props" Condition="Exists('..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props')" />

J'espère que cela vous aidera ! Bonne chance,

Santé,

3voto

Wolf5 Points 2906

Hack, mais l'a résolu en le copiant : c : \Program Fichiers (x86) \MSBuild\Microsoft\VisualStudio\v10.0\WebApplications *.* à c : \Program Fichiers (x86) \MSBuild\Microsoft\VisualStudio\v11.0\WebApplications *.*

1voto

Jonas Points 26

J'ai obtenu cette erreur à la fin du mois de novembre sans avoir modifié la configuration de mon installation TeamCity ou MSBuild ou le code source. Sur mon serveur de construction, Visual Studio n'est même pas installé, et le passage de VS2010 à VS2012 a été effectué à la fin du mois d'août sans aucun problème à l'époque.

Ma version de MSBuild est 4.0.30319.18408, mon serveur de construction est un Windows Server 2008 R2 SP1 avec TeamCity v6.5.3.

J'ai résolu le problème en copiant simplement le dossier v11 à partir d'un autre serveur de construction qui n'était pas affecté.

À mon avis, cela aurait pu se produire de deux manières :

  1. Une mise à jour a déclenché la suppression du dossier v11. S'agit-il d'une mise à jour de Windows vers .NET ou autre chose ?

  2. Une mise à jour a modifié ma configuration TeamCity/MSBuild de la v10 à la v11 et les builds ne fonctionnent plus car la v11 n'a jamais existé.

J'ai reçu une mise à jour vers .NET Framework 4.5.1 le 3 décembre, cela pourrait-il être la raison ?

Bords

Jonas

0voto

Johnny_D Points 2590

J'ai récemment été confronté au même problème. Et ma conclusion est que chaque version de VS (v10, v11, v12) change le chemin de la variable de construction, comme par exemple MSBuildBinPath .

Donc spécifier la version exacte de VS n'est pas une solution, parce que vous n'avez peut-être même pas la version appropriée des fichiers installés. Il est donc préférable de spécifier un paramètre et d'utiliser les cibles qui existent sur votre machine.

Dans certains cas rares, il peut être nécessaire d'installer une version spécifique de VS et de Web Deploy. Dans mon cas, une simple version a suffi à résoudre le problème.

0voto

Wallonman Points 11

Vous pouvez ajouter la propriété VisualStudioVersion comme suit :

<ItemGroup>
  <ProjectToBuild Include="$(MSBuildProjectDirectory)\..\MySolution.sln">
    <Properties>Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0</Properties>
  </ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>

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