ASP.NET MVC 5 делится пакетами между проектами - PullRequest
0 голосов
/ 24 октября 2018

В моем решении 3 проекта:

  • Учетная запись
  • Управление
  • Домен

Учетная запись и управление являются MVC 5Приложения.Учетная запись находится в корневом каталоге IIS (http://localhost/), а Management находится в этом приложении как приложение (http://localhost/Management). Домен - это библиотека классов, поэтому я могу совместно использовать контекст базы данных между ними.

Я использую пакеты для обслуживания файлов JS и CSS. Ниже приведен фрагмент из App_Start / BundleConfig.cs в приложении Account.

public static void RegisterBundles(BundleCollection bundles)
{
    bool developerMode = Environment.MachineName != "LIVE_MACHINE";
    string libScriptsDirectory = "~/Public/scripts/lib/";
    string libStylesDirectory = "~/Public/styles/lib/";

    string[] libScripts = new string[]
    {
        libScriptsDirectory + (developerMode == true ? "vue-2.5.17.dev.js" : "vue-2.5.17.min.js"),
        libScriptsDirectory + "vuetify-1.3.1.js",
        libScriptsDirectory + "vue-resource-1.5.1.js",
        libScriptsDirectory + "vue-snotify-3.2.1.js",
        libScriptsDirectory + "moment-2.22.2.js"
    };

    string[] libStyles = new string[]
    {
        libStylesDirectory + "material-41.css",
        libStylesDirectory + "font-awesome-4.7.0.css",
        libStylesDirectory + "vuetify-1.3.1.css",
        libStylesDirectory + "vue-snotify-3.2.1.css"
    };

    bundles.Add(new ScriptBundle("~/bundles/lib.min.js").Include(libScripts));
    bundles.Add(new StyleBundle("~/bundles/lib.min.css").Include(libStyles));

    BundleTable.EnableOptimizations = !developerMode;
}

Это прекрасно работает с @Scripts.Render("~/bundles/lib.min.js") в приложении Account.и я даже могу сделать @Scripts.Render("/bundles/lib.min.js") в приложении управления. Единственная проблема с этим, я хотел бы использовать BundleTable.EnableOptimizations, когда я нахожусь в среде разработки. Это возможно в приложении учетной записи, как, когда это установлено в false,Мне предоставили все мои файлы JS и CSS, но это не относится к приложению Management, поскольку я не ссылаюсь на виртуальный путь, поэтому он всегда будет получать связанную версию.

Я не делаюособенно хочу иметь два набора одного и того же кода, которые делают одно и то же. Есть ли способ, которым я могу иметь одно место, гдемои статические файлы JS и CSS используют и объединяют в обоих приложениях для обслуживания связанных и разделенных файлов?Насколько я понимаю, пакеты не допускают абсолютных путей, поэтому я знаю, что это не вариант.

1 Ответ

0 голосов
/ 24 октября 2018

Я решил эту проблему, добавив виртуальный каталог, указывающий на абсолютный путь файлов JS и CSS, которые я хотел использовать.Я добавил этот виртуальный каталог в каждое приложение, поэтому / Lib / ... работает и / Management / Lib / ... работает.

...