Fehler beim Erstellen von ASP MVC Views zur Build-Zeit

8

Ich habe ein ASP MVC 4 Projekt. Es begann als MVC 1, also verwendet es die alten ASPX / ASCX-Ansichten. Ich möchte, dass die Ansichten zum Zeitpunkt der Erstellung kompiliert werden, hauptsächlich um die Fehlerüberprüfung bei der Kompilierung zu erhalten (und außerdem, um die Fehler direkt in Visual Studio anzeigen zu lassen). Ich entwickle in Visual Studio Pro 2015 mit IIS Express als Debug-Server.

Wie in beiden MSDN , Haacked und Fragen hier wie das habe ich folgendes eingestellt .vbproj:

%Vor%

und auch in meiner .vbproj erstellt eine Aufgabe

%Vor%

Das gibt mir jedoch einen Fehler beim Erstellen:

  

'/ temp' ist keine gültige IIS-Anwendung.

Es verweist als Datei nur auf ASPNETCOMPILER

Ich habe verschiedene Alternativen ausprobiert, wie VirtualPath - Ich habe das Projekt so konfiguriert, dass es als Unterverzeichnis / local in Dev läuft, also habe ich das und die Site ausprobiert Namen aus der Konfig im Ordner .vs und nichts funktioniert.

Soll ich VirtualPath ändern (und wenn ja, was?) oder gibt es eine andere Konfiguration, die temp nicht funktioniert?

Bearbeiten

Auch bekomme ich den gleichen Fehler beim Ausführen einer Befehlszeile MSBuild. Für meine tatsächlichen Produktionssysteme habe ich ein Skript, das einen Build mithilfe der Befehlszeile MSBuild erstellt und dann das erstellte Paket auf die Produktserver verschiebt und bereitstellt. Das heißt, dass IIS Express (oder IIS) nicht ausgeführt wird, wenn es erstellt wird. Brauchen Sie einen Webserver, der nur zum Kompilieren der Ansichten verbunden ist?

Bearbeiten 2

Ich bin verwirrt über die Notwendigkeit für den VirtulPath hier und die scheinbare Verbindung zum Webserver. Einige der vorgeschlagenen Lösungen beinhalten die Konfiguration von IIS. IIS Express (das ich zum Debuggen verwende) läuft nicht unbedingt bis nach einem erfolgreichen Build, wie ich es verstehe? Jedenfalls läuft meine Anwendung ziemlich glücklich in einem virtuellen Verzeichnis ( / local im Debug-Modus), aber die Verwendung als ein Wert funktioniert nicht. Wenn es darauf ankommt, ist dies der relevante Teil der Datei applicationhost.config im Ordner .vs in meinem Projekt (ich habe versucht, die gleichen Pfade in die Datei applciationhost.config in Documents / IIS Express zu setzen):

%Vor%

Also verstehe ich wirklich nicht, warum nur VirtualPath="/" nicht funktioniert, da dies der virtuelle Pfad ist, auf den in diesen Konfigurationen verwiesen wird.

Obwohl mein Hauptziel darin besteht, in Visual Studio Ansichtsfehler anzuzeigen (und ich akzeptiere eine darauf beschränkte Antwort), ist es auch der Fall, dass ich für Produktionsumgebungen mit MSBuild auf einem Rechner baue, der nicht unbedingt sogar über IIS verfügt Eingerichtet.

    
Adam 23.02.2017, 07:23
quelle

2 Antworten

3

AspNetCompiler ruft aspnet_compiler.exe auf ( Ссылка ) . In Visual Studio Error List Aufrufe an diese EXE werden als ASPNETCOMPILER angezeigt.

Ich empfehle Ihnen, zu aktivieren Diagnose-Level-Protokoll Ссылка , dann suchen Sie Build-Protokoll für aspnet_compiler.exe Zeichenfolge und überprüfen Sie, welche Parameter (insbesondere welcher Pfad) beim Aufruf von aspnet_compiler.exe verwendet wird. Sie können auch von Log & amp kopieren; Rufen Sie aspnet_compiler.exe manuell in cmd.exe auf.

Wahrscheinlich liegt das Problem im PhysicalPath-Attribut, nicht in VirtualPath. Das VirtualPath-Attribut wirkt sich nicht auf den Build aus. Überprüfen Sie diese Antworten:

Wenn Sie separate Pfade für MSBuild und Visual Studio benötigen, können Sie diese Technik verwenden Ссылка

    
snautz 06.03.2017, 11:56
quelle
1

Basierend auf der Antwort von @snautz ist die Zeile, die ich tatsächlich für mich nutze,

%Vor%

Viele der Online-Beispiele haben $(ProjectDir)\..$(ProjectName) als PhysicalPath verwendet, aber ich bin mir nicht sicher warum, da das nur in $(ProjectDir) ...

aufgelöst wird     
Adam 31.07.2017 12:13
quelle