Ответ 1
Поместите файлы JS в одну папку, скорее всего, выше всех остальных, и добавьте их в проект, но используйте опцию "Ссылка". Это часть раскрывающегося списка кнопки "ОК" в диалоговом окне "Добавить существующий элемент...".
Я работаю с Visual Studio. Там у меня есть решение с несколькими веб-проектами (.net MVC 4). Все эти веб-проекты используют одни и те же javascript-lib. В настоящее время я копировал библиотеку в каждый проект, но это не может быть окончательным решением. Каков наилучший подход к совместному использованию этой библиотеки (активов в целом) между всеми проектами? Просто соедините их? Или можно создать проект и указать его во всех проектах?
Обновление
"Ссылка" javascript файлы из другого проекта не является возможным решением как Мне нужно было бы связать тысячи файлов (одна из библиотек, которые я использую, это ExtJs), что делает это невозможно построить проект без замораживания визуальной студии...
Возможное решение
В настоящее время у меня есть (Web) MVC Project под названием "Web" и проект (Class Library) под названием "ClientScript", который содержит все файлы JavaScript, которые совместно используются несколькими веб-проектами. Поскольку связывание всех необходимых файлов JavaScript не является возможным решением (потому что это вопрос тысяч файлов, что заставляет визуальную студию замораживаться) Я копирую все необходимые файлы JavaScript в отдельные проекты, используя события Build в каждом веб-проекте (Project → Properties → Build Events → Post-build). Моя командная строка Post-build в веб-проекте выглядит следующим образом:
start xcopy "$(SolutionDir)ClientScript\Frontend\*" "$(SolutionDir)Web\Scripts" /r /s /i /y /D /E
Каждый раз, когда вы создаете свой веб-проект, все измененные файлы Javascript копируются из проекта ClientScript в ваш веб-проект.
При разработке Javascripts запускаю небольшой инструмент "filewatcher", который автоматически копирует файл из проекта ClientScript в каждый веб-проект при его изменении. Таким образом, мне не нужно создавать веб-проект каждый раз, когда я вношу изменения в один из Javascripts.
Поместите файлы JS в одну папку, скорее всего, выше всех остальных, и добавьте их в проект, но используйте опцию "Ссылка". Это часть раскрывающегося списка кнопки "ОК" в диалоговом окне "Добавить существующий элемент...".
Любой, кто сталкивается с этим вопросом здесь в будущем, должен знать, что в Visual Studio теперь есть общие проекты для решения этой проблемы. Универсальные проекты Windows используют их по умолчанию, и вы можете создавать свои собственные, загружая и устанавливая расширение VS здесь: https://visualstudiogallery.msdn.microsoft.com/315c13a7-2787-4f57-bdf7-adae6ed54450
Примечание. В это время они могут быть придирчивыми к тому, какой тип проекта вы пытаетесь добавить общую ссылку. Я создал совлокальный проект JavaScript для обмена файлами js между приложением Windows store js и веб-приложением MVC, и это не позволило мне сделать это, сказав, что они должны быть одного языка. (Он поддерживает С#, С++ или JavaScript).
Когда вы запускаете каждый новый проект ASP.NET MVC 4, он принимает новый порт, который принимает другое приложение.
Я просто предлагаю вам простую вещь.
запустите проект, содержащий все pacakages. откройте их webmatrix и запустите их как localhost: 80.
Вам нужно установить порт в разделе настроек вашего сайта в webmatrix. Теперь он будет привязан к локальному хосту, теперь вы можете ссылаться на все библиотеки из этих пакетов.
Немного более старый поток, но у меня есть другой способ сделать аналогичную вещь с помощью веб-Essentials, которая обрабатывает проблему с неправильной публикацией.
У меня есть общая папка за пределами проектов, для которых требуется общий файл, обычно "общий" проект с другими вещами, но может быть просто простой папкой, как это предложил Майкл Перренуд.
Однако вместо "Добавить как ссылка" я создавал новый проект в проекте, для которого требуется общий файл js/css с тем же именем, что и общий файл, а затем ссылающийся на этот файл в общей папке с помощью относительное местоположение ссылки, а не корень, основанный на том, с которого он начинается.
Чтобы добавить файл из общей папки в корень решения в папку сценариев, используйте следующий код в новом файле пакета (*.bundle), изменив имена файлов/файлов по мере необходимости.
<?xml version="1.0" encoding="utf-8"?>
<bundle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://vswebessentials.com/schemas/v1/bundle.xsd">
<settings>
<minify>false</minify>
<runOnBuild>true</runOnBuild>
</settings>
<files>
<file>../../MySharedFolder/my-js-file.js</file>
</files>
</bundle>
Затем каждый раз, когда вы его создаете, воссоздает пакет с последней версией, эта версия также публикуется как ожидалось:)
Вы можете даже создать мини-версию, если хотите, изменив "minify" на true. Или, что еще лучше, вы можете добавить их как пакет, если хотите, у вас есть гибкость.
Это более старая нить, но из-за сложных бизнес-требований в наши дни приложения делятся на разные модули или подпроекты. Таким образом, нам нужно обмениваться общими ресурсами, такими как файлы JavaScript, темы и файлы таблиц стилей CSS.
Я лично считаю, что общие файлы должны быть помещены в отдельный проект Asp.Net MVC 5, который имеет следующую структуру: Структура папок ASP.NET MVC5
Теперь самое лучшее, что вы можете отдельно управлять зависимостями, используя менеджер пакетов Bower, NPM или Nuget.
После того, как вы создали все файлы в этом проекте, этот проект будет создан на вашем собственном CDN или может быть в облаке. Вы можете использовать Использование CDN в Bundle Approach для получения script или ссылок ссылки.
Это поможет вам обмениваться общими ресурсами по всем проектам. Мы короткое время, хотя, если у вас много разработчиков в команде, и если кто-то добавил несовместимую версию lib, это может повлиять на все приложения.