Как скопировать файлы из структуры ссылочной сборки в локальную структуру - PullRequest
0 голосов
/ 28 декабря 2010

Я создаю библиотеку, в которой есть некоторые зависимости, которые не компилируются (пример: файлы javascript и css).

Я хотел бы, чтобы зависимые файлы автоматически создавались или копировались в структуру проекта-потребителя, когда библиотека имеет ссылку - динамически в эталонное время.

Благодаря моему исследованию я нашел способы сделать это с помощью сценариев до и после сборки для потребляющего проекта, но я действительно хочу сделать следующее:

  • В Потребитель , Добавить ссылку на Библиотека
  • Код Выполняет, что Копирует все соответствующие файлы * .js и * .css из Структура папки Библиотеки в Структура папки пользователя .
  • Если copy недоступен, я бы согласился с выполнением кода для создания соответствующих файлов в Consumer .

Опять же, я хотел бы избежать сценариев до и после сборки, если смогу - в конце дня мне нужен потребитель , чтобы вместо файлов js и css из библиотеки , чтобы отображение и выполнение работали, не заставляя потребитель вручную перемещать эти файлы.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 28 декабря 2010

Как сказал Ганс в своем комментарии: просто вставляйте их как ресурсы в сборку. Делать это для javascript, css и изображений довольно тривиально.

  1. Перейдите к свойствам файла (js / css / images) и установите для его параметра «Копировать в вывод» значение «Не копировать», а для действия «Создать» - «Встроенный ресурс»
  2. В файле AssemblyInfo.cs вашего проекта сборки добавьте такие строки, как:

    [сборка: WebResource («MyAssembly.Javascript.MyJavascript.js», «application / javascript», PerformSubstitution = false)]

  3. Чтобы добавить JavaScript на страницу (из пользовательского элемента управления или из того, что находится в вашей сборке), добавьте следующее:

    String location = Page.ClientScript.GetWebResourceUrl (this.GetType (), "MyAssembly.Javascript.MyJavascript.js");

    StringBuilder startup = new StringBuilder (String.Empty); startup.Append (@ ""); startup.Append ( "");

    Page.Header.Controls.Add (новый LiteralControl (startup.ToString ()));

Обратите внимание на параметр PerformSubstitution в директиве WebResource. Это позволяет вам помещать во встроенные файлы CSS такие вещи, как следующие:

.ribbonGroupLeft {
    width: 3px;
    height: 85px;
    background-image: url(<%=WebResource("MyAssembly.images.RibbonGroupLeft.png") %>);
    background-repeat: no-repeat;
    overflow: hidden;
    margin: 0px 0px 0px 0px;
    padding: 0px 0px 0px 0px;
}

URL-адрес указывает на изображение, расположенное внутри сборки. Если для параметра PerformSubstitution задано значение true, .net автоматически установит URL-адрес в правильное местоположение.

Как примечание, все основные поставщики библиотек управления делают что-то в соответствии с вышеприведенным. Прекрасно работает, если вы помните, чтобы сделать шаг 1.

...