2013-09-23 15 views
22

Jedes Mal, wenn ich eine Datei in ein ASP.NET-Projekt als Link verlinken muss, gibt es immer etwas, was ich vergessen habe, weil Visual Studio viel zu nervig und nervig ist mit diesen. Es liegt ein Fehler/eine Einschränkung vor, sodass die Datei nicht in den Debug-Ausgabeordner kopiert wird. Außerdem müssen die Eigenschaften der Datei geändert werden, damit sie in den Ausgabeordner für Veröffentlichungen kopiert wird.Datei als Link in Visual Studio hinzufügen - Debug und Publizieren

Ich habe das auf die harte Tour gelernt, nach vielen Recherchen, und ich habe ein AfterBuild-Ziel erstellt, um diesen Prozess zu vereinfachen. Beim Hinzufügen der Datei muss jedoch noch etwas manuell ausgeführt werden.

Hier ist ein Beispiel für ein Projekt, das ich pflege. Angenommen, wir möchten die Datei YIUCARD im Ordner "Dienstprogramme" des ASP.NET-Projekts hinzufügen.

1) Klicken Sie mit der rechten Maustaste auf den Ordner "Dienstprogramme" in Visual Studio und wählen Sie "Hinzufügen -> Vorhandenes Element".

Step 1

2) Wählen Sie die Datei hinzufügen, darauf klicken ONCE (nicht Doppelklick).

Step 2

3) als nächstes in den Pfeil klicken Sie auf die Schaltfläche „Hinzufügen“ und wählen Sie „Als Verknüpfung“.

Step 3

Im Moment wird dies nichts tun. Die Datei wird nicht in einen beliebigen Ordner kopiert (Debuggen und Veröffentlichen). Es wird nur zum Projekt hinzugefügt.

4) Klicken Sie mit der rechten Maustaste in die Datei und öffnen Sie Eigenschaften.

Step 4

5) ändern: „Aktion Build“ auf „Inhalt“ „kopieren Output Directory“ auf „Kopieren immer“

Step 5

Zu diesem Zeitpunkt wird die Datei in den Publish-Ausgabeordner kopiert werden (an jeder Stelle, die wir beim Veröffentlichen definieren). Wenn wir jedoch lokal debuggen (F5), wird es nicht funktionieren, weil die Datei nicht in den lokalen Ordner "Dienstprogramme" in der Codebasis kopiert wird.

6) Speichern Sie die Änderungen in Visual Studio, indem Sie "Alle speichern" auswählen. Dies ist so, dass die ".csproj" -Datei gespeichert wird, da wir Änderungen daran vorgenommen haben und diese nun manuell bearbeiten werden.

Step 6

7) Öffnen Sie die „CSPROJ“ in Notepad ++.

Step 7

8) Fügen Sie die Datei auf die "Before" Ereignis (hier ist von mir):

Step 8

<Target Name="BeforeBuild"> 
    <ItemGroup> 
     <UtilitiesFiles Include="..\path\to\file\REDOPXX.NEW" /> 
     <UtilitiesFiles Include="..\path\to\file\REDFMTST" /> 
     <UtilitiesFiles Include="..\path\to\file\JOBCARD" /> 
     <UtilitiesFiles Include="..\path\to\file\YIUCARD" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(UtilitiesFiles)" DestinationFolder=".\utilities" SkipUnchangedFiles="true" /> 
    </Target> 

9) Ich habe eine "Afterbuild" Ereignis für Release-Modus, veröffentlicht das Projekt automatisch für mich, so dass die Dateien direkt in den gewünschten Ausgabeordner gehen:

10) Speichern Sie die Datei in Notepad ++ und laden Sie sie erneut in Visual Studio.

Step 10

Wenn Sie das Projekt erstellen, wird die Datei in beiden Debug kopiert und Release/Publish Ordner!

Allerdings würde ich gerne wissen, ob es eine einfachere/intuitive Möglichkeit gibt, dies zu tun.

Sie könnten sagen, dass dies behoben werden würde, indem Sie den Debug-Ausgabeordner auf den gleichen wie den Release/Publish-Ordner ändern, so dass die Dateien nach der ersten Veröffentlichung dort wären. Bitte beachten Sie, dass es auch einen Fehler gibt. Wenn ich einen anderen Ausgabeordner als "bin" verwende, beschweren sich aspx-Dateien darüber, dass sie die Assemblys nicht finden können. Selbst wenn ich "Copy to Output Directory" auf "Copy Always" setze, wird es sich beschweren, dass "Global.asax.cs" nicht gefunden wurde.

Bitte sehen Sie diese Fragen:

Parser Error Message: Could not load type 'TestMvcApplication.MvcApplication'

"Could not load type [Namespace].Global" causing me grief

Ist das Fest/verbessert in den neueren Versionen von Visual Studio?

Antwort

0

Wenn Inhaltsordner (z. B. Skripts, Bilder) einbezogen werden sollen, sollten Sie die einzelnen Dateien nicht verwalten. Fügen Sie diese Ordner stattdessen in Ihre Build- und Veröffentlichungsdateien ein.

Wenn Dateien hinzugefügt/entfernt werden müssen, aktualisieren Sie sie einfach im Inhaltsordner. Dies ist im Wesentlichen der Umgang mit Hilfedateien, da sie nicht von den Entwicklern verwaltet werden.

Schauen Sie sich diese Links gilt:

Is there a way to automatically include content files into asp.net project file?

ASP.NET Web Deployment using Visual Studio: Deploying Extra Files

+0

Hallo Keith.Das ist nicht das Problem, das ich beschreibe, aber danke für den Tipp sowieso :) – Nuno

4

Die MSBuild.WebApplication.CopyContentLinkedFiles NuGet könnte Ihnen helfen. Dieses Paket fügt ein MSBuild-Ziel hinzu, das alle Inhaltsdateien kopiert, die während des Builds als Link zum Webanwendungsordner hinzugefügt wurden.

+0

Yep - Ich hatte das gleiche Problem, mit 404 Fehler für eine "als Link hinzugefügt" CSS-Datei (fragen Sie nicht, warum - 1 SLN, 3 Web Projekte, 4 identische css-Dateien) und dieses nugget-Paket hat das Thema einfach nur gepackt. –

0

Ich denke, einer der besten Weg ist eine symbolische Verbindung zu machen, wie Sie wollen. Es wird Ihnen helfen, die Datei zu verwalten, die immer gleich sein muss.

Verwandte Themen