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?
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