.NET(Visual Studio) Доля активов между проектами

Я работаю с 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.

Ответ 1

Поместите файлы JS в одну папку, скорее всего, выше всех остальных, и добавьте их в проект, но используйте опцию "Ссылка". Это часть раскрывающегося списка кнопки "ОК" в диалоговом окне "Добавить существующий элемент...".

Ответ 2

Любой, кто сталкивается с этим вопросом здесь в будущем, должен знать, что в Visual Studio теперь есть общие проекты для решения этой проблемы. Универсальные проекты Windows используют их по умолчанию, и вы можете создавать свои собственные, загружая и устанавливая расширение VS здесь: https://visualstudiogallery.msdn.microsoft.com/315c13a7-2787-4f57-bdf7-adae6ed54450

Примечание. В это время они могут быть придирчивыми к тому, какой тип проекта вы пытаетесь добавить общую ссылку. Я создал совлокальный проект JavaScript для обмена файлами js между приложением Windows store js и веб-приложением MVC, и это не позволило мне сделать это, сказав, что они должны быть одного языка. (Он поддерживает С#, С++ или JavaScript).

Ответ 3

Когда вы запускаете каждый новый проект ASP.NET MVC 4, он принимает новый порт, который принимает другое приложение.

Я просто предлагаю вам простую вещь.

запустите проект, содержащий все pacakages. откройте их webmatrix и запустите их как localhost: 80.

Вам нужно установить порт в разделе настроек вашего сайта в webmatrix. Теперь он будет привязан к локальному хосту, теперь вы можете ссылаться на все библиотеки из этих пакетов.

Ответ 4

Немного более старый поток, но у меня есть другой способ сделать аналогичную вещь с помощью веб-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. Или, что еще лучше, вы можете добавить их как пакет, если хотите, у вас есть гибкость.

Ответ 5

Это более старая нить, но из-за сложных бизнес-требований в наши дни приложения делятся на разные модули или подпроекты. Таким образом, нам нужно обмениваться общими ресурсами, такими как файлы JavaScript, темы и файлы таблиц стилей CSS.

Я лично считаю, что общие файлы должны быть помещены в отдельный проект Asp.Net MVC 5, который имеет следующую структуру: Структура папок ASP.NET MVC5

введите описание изображения здесь

Теперь самое лучшее, что вы можете отдельно управлять зависимостями, используя менеджер пакетов Bower, NPM или Nuget.

После того, как вы создали все файлы в этом проекте, этот проект будет создан на вашем собственном CDN или может быть в облаке. Вы можете использовать Использование CDN в Bundle Approach для получения script или ссылок ссылки.

Это поможет вам обмениваться общими ресурсами по всем проектам. Мы короткое время, хотя, если у вас много разработчиков в команде, и если кто-то добавил несовместимую версию lib, это может повлиять на все приложения.