web-dev-qa-db-fra.com

Obtenez le bon $ (VisualStudiovoversion) pour VS 2017 dans un fichier MSBuild

J'ai un fichier MsBuild pour publier une solution (créé dans VS 2013 et porté à VS 2017) sur un serveur distant. La ligne offensante est celle-ci:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup> 

Quand j'exécute la commande:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild" WebSite1_Web_configs.build /p:Configuration=Integracion;Platform="AnyCPU" /p:VisualStudioVersion=15.0

Après une certaine compilation, cela finit par cette erreur:

Error MSB4062 The "TransformXml" task could not be loaded from the Assembly C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll

Bien sûr, il ne peut pas être chargé, car la version devrait être de 15,0, pas 12.0.

choses que j'ai essayées :

  • Ajouter le /p:VisualStudioVersion=15.0 À la commande où j'appelle Msbuild. Ça ne marche pas.

  • Changer, à l'intérieur du *. CSPROJ Fichier, l'élément:

<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">

Pour:

<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">

Ça ne marche pas.

Alors, comment puis-je obtenir la version vs correcte avec $(VisualStudioVersion) à l'intérieur du fichier msbuild sans avoir à le repasser le plus dur?

9
tastydb

Sur Visual Studio 2017, au lieu de modifier le fichier .csproj, vous pouvez simplement accéder à la console Visual Studio Package Manager (Tools -> Nuget Package Manager -> Console de gestionnaire de packages) et installez web.Targets:

Install-Package MSBuild.Microsoft.VisualStudio.Web.targets
0
sandyiit