it-swarm.com.de

Die Task "TransformXml" wurde im TeamCity-Build nicht gefunden (Fehler MSB4036)

Hallo, ich habe Server mit TeamCity aufgebaut. Mein Projekt ist eine Sitecore-Webanwendung. Ich verwende TDS (HedgehogDevelopment). Ich habe Setup-Einstellungen in TeamCity mit MS Build erstellt und es sieht so aus, als ob das TDS-Projekt im Build Configuration Manager deaktiviert ist. Aber dann wurde es enebled und ich bekomme einen Netzfehler

C:\Programme (x86)\MSBuild\HedgehogDevelopment\SitecoreProject\v9.0\HedgehogDevelopment.SitecoreProject.targets (310, 5): Fehler MSB4036: Die Task "TransformXml" wurde nicht gefunden. Überprüf den Folgendes: 1.) Der Name der Aufgabe in der Projektdatei ist derselbe wie der Name der Taskklasse. 2.) Die Taskklasse ist "public" und implementiert die Microsoft.Build.Framework.ITask-Schnittstelle. 3.) Die Aufgabe wird korrekt mit in der Projektdatei oder in der .__ deklariert. * .tasks-Dateien im Verzeichnis "C:\Windows\Microsoft.NET\Framework64\v3.5". Projekt NetKey.TDSMaster\MyProject.TDSMaster.scproj ist fehlgeschlagen. Projekt Website\MyProject.sln ist fehlgeschlagen

Die Hilfe bei der Fehlerbeschreibung ist für mich kein Fall. Ich habe kein VS 2012 auf der Build-Maschine. Ich habe Microsoft Visual Studio 2012 Shell Zur Unterstützung meines Webprojekts installiert Wie kann ich das Problem lösen? Vielen Dank. 

24
Arbejdsglæde

TransformXML ist Bestandteil der ASP.NET Web Publishing-Tools. Daher werden sie normalerweise mit einer Visual Studio-Installation auf Ihrem Build-Server geliefert und erfordern mehr als nur die Shell-Version von Visual Studio. Die Installation von Visual Studio Express Web Edition kann auch den Trick erfüllen.

Sie könnten versuchen, das Web-Deploy-Paket zu installieren, um zu sehen, ob es ausreichend ist, aber normalerweise installiere ich einfach die Vollversion von Visual Studio auf einem Build-Agent. Dies ist unter MSDN Subscription-Lizenzierung zulässig.

Nach einigem Experimentieren kann ich feststellen, dass Sie mindestens die Visual Studio Web Developer Tools auf dem Build-Server installieren müssen, damit diese Aufgaben auf offizielle Weise installiert werden können. Ich vermute, dass die Installation von Visual Studio Express Web Edition ausreichen würde.

enter image description here

21
jessehouwing

Versuche dies:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
18
Choquequirao

Kurze Antwort - Explizit importieren

Was ich tun musste:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets" Condition="!Exists('$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets')" />

Lange Antwort

Wenn Sie in VS2013 Datei -> Neues Webprojekt ausführen, wird in Ihrer * .csproj-Datei Folgendes angezeigt:

<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)' != ''" />

Die $(VisualStudioVersion) wurde für mich auf Build-Maschinen und auf mehreren Entwicklungsmaschinen immer mit 11.0 Ausgewertet. Sogar auf Maschinen mit VS2013, das ist 12.0.

Als ich mich damit beschäftigte, stellte ich fest, dass es in Microsoft.WebApplication.targets Von oben eine Zeile zum Importieren der Datei gibt, die wir wirklich wollen Microsoft.Web.Publishing.targets, Nur wenn sie wie in Zeile 377 vorhanden ist:

<!--Import publishing target-->
<Import Project="..\Web\Microsoft.Web.Publishing.targets" Condition="Exists('..\Web\Microsoft.Web.Publishing.targets')" />

Für mich ist dies also ein impliziter Import von Microsoft.Web.Publishing.targets.

Das Problem ist, dass, wenn diese Datei nicht existiert, sie nichts tut und Sie nichts darüber wissen, bis Sie den Fehler erhalten, wenn Sie versuchen, die Task TransformXml zu verwenden.

Bei der Installation von VS2013 wurde Microsoft.Web.Publishing.targets Nicht im Verzeichnis 11.0 Installiert. Es wurde im Verzeichnis 12.0 Installiert. Ich vermute, wenn ich VS2012 installiert habe, würde es es tun .

Auf jeden Fall konnte ich es lösen, indem ich explizitMicrosoft.Web.Publishing.targets Aus dem 12.0 - Verzeichnis importierte, wenn es nicht existierte und nicht implizit importiert von Microsoft.WebApplication.targets wie folgt:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets" Condition="!Exists('$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets')" />
13
Rick Glos

In Visual Studio 2017 werden die meisten (oder nicht alle?) Komponenten standardmäßig nicht installiert. Sie können jedoch die erforderlichen Komponenten hinzufügen (z. B. Asp.Net und Webentwicklung), wie in https://docs.Microsoft.com/en-us beschrieben/visualstudio/install/modify-visual-studio .

Das Installationsprogramm befindet sich auf meinem Computer unter "C:\Programme (x86)\Microsoft Visual Studio\Installer\vs_installer.exe".

1

Ich hatte das gleiche Problem nach dem Downgrade von TypeScript-Tools von 2.4.10 auf 2.3.3 in VS2015.

Lösung :

Ich entferne dies aus der Datei Microsoft.TypeScript.targets 

    <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>
0
imfloflo