La tâche" TransformXml " n'a pas été trouvée (erreur MSB4036) sur TeamCity build
Bonjour j'ai build server avec TeamCity. Mon projet est L'Application web Sitecore. J'utilise TDS (HedgehogDevelopment). J'ai les paramètres de construction de setup dans TeamCity avec MS build et il semble que cela fonctionne lorsque le projet TDS est désactivé dans le gestionnaire de configuration de build. Mais alors il enebled je reçois l'erreur nette
C:Program Dossiers (x86)MSBuildHedgehogDevelopmentSitecoreprojet v9.0HedgehogDevelopment.SitecoreProject.cibles (310, 5): erreur MSB4036: le La tâche" TransformXml " n'a pas été trouvée. De vérifier la suivant: 1.) Le nom de la tâche dans le fichier de projet est le même que le nom de la tâche de la classe. 2.) La classe de tâches est "public" et implémente le Microsoft.Construire.Framework.Interface ITask. 3.) Tâche est correctement déclaré dans le fichier de projet, ou dans le *.fichiers de tâches situés dans le "C:WindowsMicrosoft.NETFramework64v3.5" annuaire. Projet NetKey.TDSMasterMyProject.TDSMaster.scproj a échoué. Projet Site WebMonprojet.la sln a échoué
la description de l'aide dans l'erreur n'est pas un cas pour moi. Je n'ai pas VS 2012 sur Machine de construction. J'ai installé Microsoft Visual Studio 2012 Shell pour soutenir mon projet web. Comment le résoudre ? Grâce.
5 réponses
TransformXML
fait partie de la ASP.NET outils de publication sur le Web. En tant que tels, ils sont généralement fournis avec une installation Visual Studio sur votre serveur de construction et nécessitent plus que la seule version Shell de Visual Studio. L'installation de Visual Studio Express Web Edition pourrait aussi faire l'affaire.
Vous pouvez essayer d'installer le Web-Deploy
paquet pour voir si c'est suffisant, mais d'habitude je n'installe que la version complète de Visual Studio sur un agent de construction. C'est légal sous MSDN Les licences d'abonnement.
après quelques expériences, je peux dire que vous devez installer au moins les outils de développement Web Visual Studio sur le serveur de construction pour que ces tâches soient installées de la manière officielle. Je soupçonne que l'installation du Visual Studio Express Web Edition suffirait.
essaye ceci:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
Brève Réponse-Importation Explicite
Ce que j'avais à faire:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets" Condition="!Exists('$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets')" />
Longue Réponse
quand vous faites Fichier - > Nouveau Projet Web dans VS2013 vous obtenez ce qui suit à l'intérieur de votre *.csproj fichier:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
$(VisualStudioVersion)
toujours évalué à 11.0
pour moi sur les machines de construction et sur les machines de développement multiples. Même sur les machines avec VS2013, qui est 12.0
.
en plongeant dans ce que j'ai trouvé dans le Microsoft.WebApplication.targets
à partir de ci-dessus, il a une ligne pour importer le fichier que nous voulons vraiment Microsoft.Web.Publishing.targets
seulement si il existe, comme sur la ligne 377:
<!--Import publishing target-->
<Import Project="..\Web\Microsoft.Web.Publishing.targets" Condition="Exists('..\Web\Microsoft.Web.Publishing.targets')" />
Donc, pour moi, c'est une implicite importation de Microsoft.Web.Publishing.targets
.
le problème est que si ce fichier n'existe pas, il ne fait rien et vous ne le savez pas jusqu'à ce que vous obteniez l'erreur en essayant d'utiliser le TransformXml
tâche.
Installation de VS2013 n'avez pas installé Microsoft.Web.Publishing.targets
dans le 11.0
répertoire. Il a l'installer dans le 12.0
répertoire. Je suppose que si j'ai installé VS2012, il le faire.
En tout cas, j'ai été en mesure de le résoudre par explicitement importation Microsoft.Web.Publishing.targets
12.0
répertoire s'il n'existait pas et n'était pas implicitement importés par Microsoft.WebApplication.targets
comme ceci:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets" Condition="!Exists('$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets')" />
Dans Visual Studio 2017 par défaut, la plupart(ou la totalité?) les composants ne sont pas installés, mais vous pouvez ajouter ce qui est nécessaire (i.e. Asp.Net et Développement web) comme décrit danshttps://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio.
sur ma machine l'installateur situé à "C:\Program fichiers (x86)\Microsoft Visual Studio\Installer\vs_installer.exe"!--3-->
j'ai eu le même problème après avoir déclassé les outils TypeScript de 2.4.10 à 2.3.3 dans VS2015.
Solution:
j'ai supprimer ce à partir de Microsoft.Tapuscrit.objectifs fichier
<FormatLocalizedString Condition="'$(TypeScriptVersionCheckResult)' == 'NoneSpecified'"
Culture="$(PreferredUILang)"
Name="TypeScriptNoVersionWarning"
Arguments="$(LastKnownTypeScriptVersion)">
<Output TaskParameter="String" PropertyName="TypeScriptNoVersionWarning" />
</FormatLocalizedString>
<FormatLocalizedString Condition="'$(TypeScriptVersionCheckResult)' == 'Downgrade' OR '$(TypeScriptVersionCheckResult)' == 'Upgrade'"
Culture="$(PreferredUILang)"
Name="TypeScriptVersionMismatchWarning"
Arguments="$(TypeScriptToolsVersion);$(LastKnownTypeScriptVersion)">
<Output TaskParameter="String" PropertyName="TypeScriptVersionMismatchWarning" />
</FormatLocalizedString>