2017-11-02 1 views
0

Ich arbeite mit einer Webanwendung, die mit VS2015 geschrieben wurde, und wird mit VS2017 verwaltet. Ich versuche, eine andere Anwendung zu schreiben, um den vollständigen Webstapel mithilfe der MSBuild-API und anderer Tools lokal zu erstellen. In VS2015 oder VS2017 wird das ASP.NET-Webanwendungsprojekt erfolgreich erstellt, aber wenn MSBuild programmgesteuert ausgeführt wird, erhalte ich den folgenden Fehler:MSBuild 15 WebApplication.targets fehlt

Das importierte Projekt "C: \ Programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets "wurde nicht gefunden. Vergewissern Sie sich, dass der Pfad in der Deklaration korrekt ist und dass die Datei auf der Festplatte vorhanden ist.

Ich habe die Pakete folgende bauen in meiner App installiert:

  • Microsoft.Build
  • Microsoft.Build.Framework
  • Microsoft.Build.Tasks.Core
  • Microsoft.Build. Utilities.Core
  • Die Standardempfehlung, die ich in Foren für diesen Fehler gesehen habe, ist Visual S zu installieren Tudio auf dem Build-Server, aber ich mache das lokal und ich habe Visual Studio installiert. Ich habe auch gelesen, dass MSBuild 15 nicht mit der WebApplication.targets-Datei geliefert wird. Es gibt auch einen toolsVersion Parameter auf den Konstruktor für Microsoft.Build.Execution.BuildRequestData, die ich habe versucht, manuell 14.0 Einstellung, aber es scheint immer noch wie meine app MSBuild 15. zu verwenden versucht

    Fragen (I MSBuild Sie haben 14 installiert.):

  • Kann ich diesen Build in MSBuild 14 programmgesteuert ausführen lassen, ohne alle csproj Dateien zu aktualisieren?
  • Woher bekomme ich WebApplication.targets für MSBuild 15?

Lösung:

Dank einem großen Teil auf @ Leo-MSFT konnte ich diese Arbeit bekommen. Hier ist, wie:

  1. Uninstalled die VS2017 ASP.NET und Web Application Development Arbeitsbelastung, dann mit all seinen optionalen Komponenten neu installiert. Dies hat die fehlende Datei .targets heruntergeladen.
  2. In meiner Builder-Anwendung wurde diese Eigenschaft meiner Instanz BuildRequestData hinzugefügt, damit MSBuild in den von v15 verwendeten Ordnern aussieht, anstatt die von v14 verwendeten Ordner zu verwenden.

    ["MSBuildExtensionsPath32"] = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild"

Antwort

1

Can I make this build run in MSBuild 14 programmatically without updating any csproj files?

MSBuildExtensionsPath32 wird intern von MSBuild eingestellt. Wenn du dich nicht aktualisieren willst.csproj-Datei können Sie versuchen, den Wert in Ihrer Projektdatei außer Kraft zu setzen:

<PropertyGroup> 
    <MSBuildExtensionsPath32>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild</MSBuildExtensionsPath32> 
    </PropertyGroup> 

    <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)' != ''" /> 
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> 

Aber ich bin nicht sicher, ob es andere Fehler einführen wird (nicht getestet).

Where can I get WebApplication.targets for MSBuild 15?

Der Weg der WebApplication.targets für MSBuild 15:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications 
+0

Ich weiß, dass, dass der Pfad, in dem die Ziele sein sollte, aber ich habe sie nicht. Die allgemeinen Anweisungen, die ich gesehen habe, sind Visual Studio zu installieren, aber ich denke, das gilt nicht für die 2017-Version. – JamesFaix

+0

@JamesFaix, da Sie Visual Studio 2017 installiert haben, aber diese Ziele nicht haben, sollten Sie auch die Workloads 'ASP.NET und Web-Entwicklung' vom Installer installieren. –

+1

@JamesFaix, wie wäre es mit diesem Problem nach der Installation der Workloads ASP.NET und Web-Entwicklung von Installer? –

Verwandte Themen