Что я должен делать с файлами содержимого при совместном использовании библиотеки сборки с другим программистом? - PullRequest
1 голос
/ 30 июля 2009

У меня есть библиотечный проект, в котором есть некоторые файлы содержимого (например, файлы XML и схемы, файлы изображений и т. Д.), Для которых для Build Action установлено значение Content (всегда копировать).

Этот библиотечный проект находится в решении Visual Studio, в котором также есть тестовое приложение (WPF), которое ссылается на библиотеку.

Когда я создаю решение, все файлы содержимого из проекта зависимой библиотеки копируются в папку bin моего тестового приложения. (Они также копируются в папку bin проекта библиотеки.)

Сегодня я передал сборочную dll, сгенерированную моим библиотечным проектом, другому программисту для ссылки. Однако мне даже не приходило в голову, что этого недостаточно. Мне нужно было также дать ему файлы с контентом. Я так и сделал, и он добавил их в свой проект.

Это решение работает, но мне неудобно с ним. Мне не нравится, что файлы содержимого смешиваются с файлами его проекта. Это повышает вероятность того, что они могут быть случайно изменены или удалены.

Итак, я надеюсь, что смогу получить несколько советов о том, как делиться библиотеками с другими программистами, когда речь идет о файлах контента.

Примечание. Дело не в том, что я пытаюсь скрыть файлы содержимого (на самом деле важно, чтобы программисты, ссылающиеся на эту библиотеку, имели к ним доступ), но я бы хотел, чтобы они оставались отделенными от ссылочного проекта, но при этом все равно копировались папка bin, когда их проект компилируется. Я предполагаю, что я хочу сказать, что я хочу, чтобы у них был проект библиотеки, а не файлы кода и файлы xaml.

Спасибо.

EDIT:

Одна идея, которая приходит мне в голову, заключается в том, что я могу скопировать только структуру папок и файлы содержимого из моего библиотечного проекта в новый проект библиотеки классов. Затем любой, кто ссылается на мой библиотечный проект, может добавить эту минимальную библиотеку классов в свое решение. Им все равно придется ссылаться на dll как на отдельный шаг, но это определенно лучше, чем текущее решение. Возможно, я мог бы даже написать событие после сборки, которое автоматически копирует все файлы содержимого из моего библиотечного проекта в минимальную библиотеку классов. (Теперь я просто должен исследовать, как на самом деле написать событие сборки :)). Комментарии приветствуются.

РЕДАКТИРОВАТЬ 2:

Я основывался на своем первоначальном редактировании, чтобы найти решение, которое, я думаю, меня порадует. Смотрите мой ответ ниже.

Ответы [ 2 ]

2 голосов
/ 30 июля 2009

Сделать файлы содержимого вложенными ресурсами. Затем вы можете получить их с помощью Assembly.GetManifestResourceStream(). Это делает вашу сборку намного более переносимой - вы больше не полагаетесь на расположение файловой системы во время выполнения.

0 голосов
/ 31 июля 2009

Я решил удалить файлы содержимого из проекта библиотеки и поместить их в новый проект библиотеки «только для содержимого», который содержит только содержимое. Если кому-то нужно использовать проект библиотеки, я просто делю папку с библиотекой проекта библиотеки dll и только для содержимого. Таким образом, связь между проектами и файлами содержимого в папке решения остается точно такой же, и все обновляется автоматически при компиляции.

...