Umgang mit gängigen JavaScript-Dateien in Visual Studio 2010
Beginnen wir die Arbeit auf ein paar komplett JavaScript-abhängige web-apps (unsere bisherigen apps wurden ASP.NET MVC mit JavaScript "Güte" sprinkled over-the-top).
Wir haben ein paar Dateien, die freigegeben wird, auf der ganzen Linie, und es würde nett sein, speichern Sie diese Dateien in ein Gemeinsames Projekt und "Add As Link" in einzelnen Projekten (wie möglich wäre mit kompiliertem code).
Offensichtlich ist dies nicht funktioniert, mit etwas JavaScript-Code, der die Datei nicht wirklich 'dort' in der korrekten Position.
Hat jemand irgendwelche Vorschläge auf die Führung eines einzigen version einer freigegebenen JavaScript-Datei, die für die Verwendung in mehreren Projekten?
- gute Frage, ich habe nachgedacht über diese seit einiger Zeit. Die einzige Lösung, die geknallt haben, in meiner Erinnerung sind das hosting der Dateien auf dem web und verwenden Sie, wie ein cdn oder mit symlinks. Man könnte hinzufügen, ein code-snippet in Ihre visual studio referenzieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß, das Thema ist uralt, aber immer noch wollte, legte meine Lösung, weil es ist ein bisschen einfacher als beardtwizzle ist.
Können Sie sicherstellen, dass Visual Studio kopiert alle verknüpften Dateien zu dem Sie die Verbindung in Visual Studio den Projektmappen-Explorer, indem diese am Ende der Ihre .csproj Datei:
Habe ich beschrieben, wie das funktioniert in meinem blog-post an
http://mattperdeck.com/post/Copying-linked-content-files-at-each-build-using-MSBuild.aspx
In der end, das ist, wie ich es erreicht. Es ist vielleicht nicht jedermanns Geschmack - aber funktionierte für mich.
Hinweis: In allen unseren Projekten, statische Ressourcen werden in einem root-Verzeichnis namens "Vermögen", also zum Beispiel JavaScript ist immer in /Assets/js/und CSS /Assets/css/.
Lösung
xcopy /Y /E "$(TargetDir)\Assets" "$(ProjectDir)\Assets"
Wenn das Projekt erstellt ist, kopiert die importierten Dateien in \bin\Assets\js - das post-build Ereignis nimmt dann eine Kopie der über die Projekt-Verzeichnis - in für die Website, Sie zu benutzen.
echo f | xcopy /Y /E "$(TargetDir)Content" "$(ProjectDir)Content"
, die verhindert das "beendet mit code-X" das auftreten von Fehlern in meinem Szenario.Die richtige Lösung ist die Einbettung von javascript - /css-Dateien in Ihrem Projekt. Sie können dies tun, indem WebResources.axd. Dies ist der offizielle Weg, microsoft bettet js in Ihre Kontrollen. (Wie validation controls)
Finden Sie ein gutes tutorial auf: http://www.4guysfromrolla.com/articles/080906-1.aspx
Kann ich auch sehen, diese Frage ist uralt, aber ich dachte, ich würde hinzufügen meine zwei Cent...
Habe ich eine javascript-Datei in ein separates Projekt. Ich habe eine verlinkte Referenz und das funktioniert gut für die Veröffentlichung, aber nicht in IIS Express oder Casinni. Ich habe versucht, hinzufügen von benutzerdefinierten routing zu fangen, die fehlende Datei manuell zuordnen, aber es ist bisschen ein hack und aus irgendeinem Grund aufgehört zu arbeiten, wenn ich ein Upgrade auf MVC 5.1, also eher als Update den hack, ich fand einen besseren Weg:
System.Web.Optimization
javascript bundles.In Ihrem gemeinsamen Projekt, stellen Sie die
Copy To Output Directory
zu 'Kopieren' undBuild Action
'Content' auf Ihre js-Datei. Dies bedeutet, dass Ihre js-Dateien landen im bin-Ordner Ihrer website-Projekt. Sie kann es serviert werden (IIS nicht dazu dienen, was in den bin-Ordner aus offensichtlichen Sicherheitsgründen), aber Sie können in bundlesMüssen Sie dann fügen Sie diese auf Application_Start in Ihr global.asax-Datei (rechts neben register-Routen)
dann nutzen Sie Ihre bundle-link in Ihrem razor cshtml:
müssen Sie das nuget-Paket für microsoft.aspnet.web.Optimierung
Könnte man vielleicht verwenden visual studio-Vorlagen
gute Frage, ich habe nachgedacht über diese seit einiger Zeit. Die einzige Lösung, die geknallt haben, in meiner Erinnerung sind das hosting der Dateien auf dem web und verwenden Sie, wie ein cdn oder mit symlinks. Man könnte hinzufügen, ein code-snippet in Ihre visual studio referenzieren.
Dieser blog-post beschreibt eine alternative Lösung, um die Antwort von @beardtwizzle:
http://consultingblogs.emc.com/jamesdawson/archive/2008/06/03/using-linked-files-with-web-application-projects.aspx
Die Idee ist ähnlich:
Anstatt also eine post-build-event, das die Dateien kopiert werden, die durch eine modifizierte build-Schritt. Für mich ist diese Lösung fühlt sich ein wenig sauberer (aber das ist vielleicht Geschmackssache). Jedenfalls habe ich nur noch diese, um unsere Lösung und es funktioniert soweit Super!
Jeder, der auf stolpert über diese Frage hier in der Zukunft sollte wissen, dass es jetzt Gemeinsame Projekte in Visual Studio, um dieses problem zu lösen. Universal-Windows-Projekte verwenden Sie standardmäßig, und Sie können erstellen Sie Ihre eigenen durch das herunterladen und installieren der VS-Erweiterung hier: https://visualstudiogallery.msdn.microsoft.com/315c13a7-2787-4f57-bdf7-adae6ed54450
Sobald Sie die Erweiterung, die Sie hinzufügen können, ein Gemeinsames Projekt (Leer) zu Ihrer Lösung. Das Projekt findet in den Projektvorlagen für Visual C#, Visual C++, und JavaScript.
Dann gehören die Dateien, die Sie freigeben möchten, um das gemeinsame Projekt in einen beliebigen Ordner-Struktur, die Sinn macht für Sie.
Als Nächstes werden Sie gehören das gemeinsame Projekt als gemeinsame Referenz in anderen Projekten in dieser Lösung, die Zugriff auf die freigegebenen Dateien. Rechts-klicken Sie auf das andere Projekt, und wählen Sie "Add Shared Project Reference".
Nun können Sie auf die freigegebenen Dateien in Ihrem Haupt-Projekt, als ob die Dateien in das freigegebene Projekt existierte. Sie werden kompiliert und als Teil dieses Projekts.
Wurde die Technologie soll für Universal apps zum teilen von code zwischen Windows Phone und Windows Store-apps-so werden Sie gewarnt, dass Sie möglicherweise Schwierigkeiten haben, den Austausch in verschiedenen Szenarien, aber es ist einen Versuch Wert, um zu sehen, wenn Sie es füllen Sie Ihr brauchen.
Ordnungsgemäße Verwendung der Versionskontrolle.
Halten die js in einem Ort ist und dann nur
git pull
(oder die equivelant Mercurial /Bazaar), Sie wieder in Ihren code, wenn Sie aktualisiert haben, Ihr javascript.package_manager update
oder was auch immer.