Вопрос

Я пытаюсь экспортировать библиотеку элементов управления в .dll для использования другими разработчиками в office.

Решение, которое я изначально создал, выглядит следующим образом:

Решение 1:
- Mri.Элементы управления (Библиотека классов)
- Mri.FmTool (веб-приложение)

Mri.FmTool ссылается на Mri.Controls.

Внутри Mri.Controls у меня есть некоторые веб-ресурсы javascript.Mri.FmTool, похоже, отлично считывает веб-ресурсы, все мои веб-ресурсы javascript отображаются так, как и должны, когда запущено веб-приложение Mri.FmTool.

Итак, теперь я пытался создать простое решение для использования Mri.FmTool

Решение 2:
- Mri.ConsumerTest (веб-приложение)

Я взял последнюю версию Mri.Controls.dll и добавил ее в качестве ссылки на приложение Mri.ConsumerTest.Все элементы управления из Mri.Controls, похоже, работают внутри Mri.ConsumerTest.Intellisense работает, он компилируется, никаких проблем.

Однако при его запуске большинство файлов WebResource.axd пусты, просто пустые.Один файл WebResource.axd не пустой, в нем просто написано "Этот ресурс не может быть найден".

Вот свойства файлов javascript внутри окна Свойств:
Создайте действие:"Встроенный ресурс"
Скопировать в Выходной каталог:"Копируй всегда"

Какой шаг я пропускаю?

Это было полезно?

Решение 3

Я заметил, что мои CSS-файлы WebResource загружались правильно, но Javascript не загружался в WebResource в новом решении.

Итак, вместо того, чтобы использовать Система.Веб.Пользовательский интерфейс.Менеджер клиентских скриптов используемый для регистрации веб-ресурсов, я переключился на использование Система.Веб.Пользовательский интерфейс.Скриптменеджер.Теперь файлы выходят из Менеджер сценариев.axd (вместо Веб-ресурс.axd).Казалось, это решило проблему.

Старый код перед исправлением:

public class ScriptManagerExtension : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        Page.ClientScript.RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js");
    }
}

Приведенный выше фрагмент кода использует System.Web.UI.ClientScriptManager

Новый код после исправления:

public class ScriptManagerExtension : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js");
    }
}

Приведенный выше фрагмент кода использует System.Web.UI.ScriptManager

Насколько я понимаю, ClientScriptManager был представлен в версии 2.0.Я считаю, что ScriptManager - это новый улучшенный способ управления скриптами версии 3.5, который обладает гораздо большей функциональностью.

/пожать плечами

Другие советы

Вероятно, вам не хватает атрибута [assembly:WebResource("YourNameSpace.YourFile.js ", "text/javascript")].WebResource.axd нуждается в этом атрибуте.Вы можете проверить это Статью КБ для получения дополнительной информации по этому вопросу.

Настроены ли ресурсы на то, чтобы быть частью библиотеки DLL?

Откройте решение Mri.Controls и просмотрите свойства ваших файлов ресурсов javascript.
Я думаю, что именно в этом может заключаться проблема.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top