20

ich Visual Web Developer Express 2010 zu veröffentlichen eine Website, vorkompilierte zu einem Remote-Server über FTP mit den folgenden Einstellungen verwenden, ist zu wollen:"Kann der gültige AspnetMergePath nicht gefunden werden" in Visual Web Developer Publish?

  • Deploy nur Dateien benötigt läuft diese Anwendung
  • Precompile dieser Anwendung vor der Veröffentlichung
  • Website aktualisierbar sein zulassen
  • keine Datenbanken
  • -Site bereitgestellt wird als Dateihierarchie eingesetzt werden, da nicht .zip Paket

Mein erster build/deploy schienen gut gegangen zu sein, aber nach meiner zweiten Zusammenstellung erhalte ich folgende Fehlermeldung:

Transformed web.config using C:\path_to_site\Web.Debug.config into obj\Debug\TransformWebConfig\transformed\web.config. 
Copying all files to temporary location below for package/publish: 
obj\Debug\AspnetCompileMerge\Source. 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.5\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132,5): Error : Can't find the valid AspnetMergePath 

Und hier ist eine Teilmenge des Inhalts des Microsoft.Web.Publishing.AspNetConfigurationMerge. Ziele file:

<Target 
     Name="GetAspNetMergePath" 
     DependsOnTargets="$(GetAspNetMergePathDependsOn)" 
     Condition ="'$(GetAspNetMergePath)' != 'false'"> 
    <PropertyGroup> 
     <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> 
     <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath> 
    </PropertyGroup> 
    <Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))" 
      Text="Can't find the valid AspnetMergePath" /> 
    </Target> 

EDIT: die Einstellungen veröffentlichen Ändern aller vorhandenen Dateien zu löschen, vor der Veröffentlichung das Problem doch nicht behoben. Ich gehe davon aus, dass das Problem aus diesem Grund lokal ist.

Es scheint kein AspMergePath-Tag in meiner web.config zu sein. Mir ist nicht bekannt, ob ich das Tag manuell hinzufügen soll. Der Pfad "obj {Einstellung veröffentlichen} \ AspnetCompileMerge \ Source" ist jedoch in meinem Projekt vorhanden.

Und wenn es darauf ankommt, ist mein Projektnamen „TestProject.NET“

Ihr Feedback sehr geschätzt wird.

+0

haben Sie versucht, Ihre Website über "Dateisystem" -Methode zu veröffentlichen? Nur als Test. – BrOSs

+0

Ja. Die Veröffentlichungsmethode "Dateisystem" läuft auf demselben Problem. –

+0

soll kein Tag ('AspMergePath') hinzugefügt werden, ein weiterer Test. Läuft es mit Strg + Shift + W? – BrOSs

Antwort

12

Was Sie brauchen, ist aspnet_merge.exe, Tool, das als Teil von Windows SDK verteilt wird. Es ist beabsichtigt, Websites vorab zu kompilieren, sodass Sie diese Vorkompilierung entweder deaktivieren oder die richtige Version von Windows SDK installieren können. Hinweis auf die Wikipedia, wegen schön vorbereiteter Links zu den Download-Seiten. Sie müssen nicht alles herunterladen/installieren (es ist riesig), einfach herunterladen Web-Installer und wählen Sie .Net-Tools, wird es etwa 50 Megabyte dauern.

Bitte beachten Sie, dass im Lieferumfang von Visual Studio 2010 Windows SDK ver. 7.0A ist nicht verfügbar, um den Download zu trennen. Sie müssen also entweder Visual Studio auf Ihrem Build-Server installieren oder etwas wie in den Antworten zu "Running MSBuild fails to read SDKToolsPath" beschrieben optimieren.

+0

Vielen Dank für die Information! Leider kann ich die Richtigkeit dieser Antwort nicht überprüfen, da ich seither Projekte geändert habe. –

+0

Richtige Antwort. Funktioniert auch heutzutage. Auf dem Build-Server müssen Sie 2015 MSBuild Tools und Windows 10 SDK installieren. – MoonStom

9

Ich habe das gleiche Problem. Durchsucht alle Microsoft-Websites, fand viele Beschwerden und keine Absicht von Microsoft, um es zu beheben.

Hier, wie ich es bei meinem System gearbeitet habe. Bearbeiten Sie die Microsoft.Web.Publishing.AspNetConfigurationMerge.targets Datei und fügen Sie die folgende Zeile hinzu. Bitte stellen Sie sicher, dass der Microsoft SDK-Pfad das gleiche auf Ihrem PC ist, wenn es dann nicht ändern:

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory> 

Hier ist, wie es aussehen soll:

<Target 
    Name="GetAspNetMergePath" 
    DependsOnTargets="$(GetAspNetMergePathDependsOn)" 
    Condition ="'$(GetAspNetMergePath)' != 'false'"> 
<PropertyGroup> 
    <TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory> 
    <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> 
    <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath> 
</PropertyGroup> 
<Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))" 
     Text="Can't find the valid AspnetMergePath" /> 

+0

Mit demselben Problem funktioniert diese Lösung gut für mich. Selbst wenn ich den "saubereren", den von @ tspauld vorgeschlagenen, bevorzugt hätte, wäre es mir leider nicht gelungen, es in meinem Fall zum Laufen zu bringen. – PierrOz

+0

Diese Lösung funktionierte auch für mich, aber ich weiß nicht, warum die '' Zeile vollständig aus meiner '.targets' Datei fehlte. –

11

Hier ist ein Lösung, die die Zieldatei nicht ändern muss.Die Problemumgehung von http://connect.microsoft.com/VisualStudio/feedback/details/786492/publish-cant-find-the-valid-aspnetmergepath schlägt vor, zusätzliche Eigenschaften zu Msbuild zu übergeben. Ich war in der Lage, es zu bekommen dies funktioniert mit:

msbuild website.publishproj /p:DeployOnBuild=true /p:PublishProfile=Release /p:VisualStudioVersion=12.0 /p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\"

Der Schlüssel hier ist die AspnetMergePath Eigenschaft, die Sie benötigen, können sich ändern, wenn das Windows SDK in einem anderen Ort installiert ist. Wenn ich die GetAspNetMergePath-Eigenschaft von der Problemumgehung einbeziehen, schlägt es fehl, aber das wird möglicherweise abhängig von der SDK-Version benötigt.

+0

Ahh .. hat nicht funktioniert .. Win8, VS 2012 und 2013 installiert, was möglicherweise der Pfad sein könnte :( – manishKungwani

+0

Arbeitete gut für mich! DANKE! :) – Natalia

+0

Ich bemerke, dass Sie auch VisualStudioVersion = 12.0 übergeben ... Sie würden Versuchen Sie nicht, mit VS 2013 auf einem TFS 2012-Buildserver zu erstellen, oder? – bwerks

0

Ich traf das gleiche Problem.

Bearbeiten Sie die Datei Microsoft.Web.Publishing.AspNetConfigurationMerge.targets und fügen Sie die folgende Zeile hinzu. Stellen Sie sicher, dass der Ausführungseditor über Administratorrechte verfügt.

Sieht die richtige Version Visual Studio in meinem Fall VS2013.

x64

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory> 

x86

<TargetFrameworkSDKToolsDirectory>C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory> 

Und es funktioniert! Ich kann mein Projekt kompilieren.

2

Eine Problemumgehung für all diese Dinge [einschließlich SDK usw. installieren] ist, die Precompile On Publish Option zu deaktivieren, die erfordert, dass AspNetMerge vorhanden ist, auch wenn Sie nicht angeben, dass Sie möchten, dass Sachen zusammengeführt werden die ultimative Ausgabe.

ich auf große Längen würde, um herauszufinden, wie es zu deaktivieren, über die Optionen-Dialog brütete und das freundliche Handbuch Lesung zu bestätigen Ich hatte es nur für Kinder ab ausgeschaltet zu erkennen, dass es die Checkbox draußen war:

enter image description here

Durch Entfernen des Häkchens ergeben sich folgende Änderungen an der .pubxml:

- <PrecompileBeforePublish>True</PrecompileBeforePublish> 
- <EnableUpdateable>True</EnableUpdateable> 
- <DebugSymbols>False</DebugSymbols> 
- <WDPMergeOption>DonotMerge</WDPMergeOption> 

, die für mich gearbeitet.

NB es ist jedoch kritisch as covered here haben sowohl die Web (die leise Publishing über /p:DeployOnBuild inert machen) und die WebApplications (die einen Compiler-Fehler geben wird) Unterordner vorhanden unter %Program Files (x86)%\MSBuild\Microsoft\VisualStudio\v14.0 (Visual Studio 2015 Werkzeuge unter der Annahme,) für die Veröffentlichung, um erfolgreich Pakete zu generieren

Verwandte Themen