|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Есть несколько проектов, которые между собой не связаны, но дизайн в плане стиля кнопочек, шрифтов и прочего общий. В каждом проекте есть папка с ресурсами Resources, в ней картинки-иконки + styles.xaml. Проекты делались последовательно, поэтому сразу универсального решения я не придумал, а копипастил ресурсы из проекта в проект как временное решение. Настал тот день, когда все нужно сделать по уму. Очень хочется все ресурсы вынести куда-то в отдельный проект и подключать. Как вы обычно решаете такую проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 09:15 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
monstrillaОчень хочется все ресурсы вынести куда-то в отдельный проект и подключать. И в чём конкретно сложность? Сколько помню, такой вариант срабатывал. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 09:36 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Ilya81, Нууу, я не соображу как вынести ресы в отдельный проект. Какого проект должен быть типа. Создал проект "библиотека классов", но это явно не то... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 09:50 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
А вообще получилось, смутило то, что при создании проекта "библиотека классов", невозможно уже добавить к проекту файл как ресурс WPF. Только как юзерконтрол. Приходится удалять .cs-файл от юзерконтрола и вычищать .xaml-файл. Неудобно, но работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 10:15 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Рекомендую добавить тип проекта {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548} - это WPF. Вообще, заготовки проектов достаточно условны, иногда лучше тип выставить самостоятельно, как и многое другое, впрочем, если нужно, здесь есть справочная информация. Да и если уже есть XAML-файлы, какой смысл создавать, не проще ли скопировать файлы, можно вообще создавать файлы без Visual Studio, вряд ли чем-то сложно добавить потом самостоятельно заголовок словаря ресурсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 10:25 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Ilya81, У меня проект типа class library и вот такой гуид сейчас {8a3e7e11-6f1c-4271-b17b-236ded62e401}. Его даже в списке нет. Заменил на ВПФ-гуид - ничего не поменялось. Как нельзя было добавлять файлы ресурсов, так и не добавляются. Конечно, несложно создать файл руками и добавить в студии в проект через ctrl+O, но менее удобно. Хочется ведь все делать не покидая пределы удобной студии. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 10:36 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
monstrillaХочется ведь все делать не покидая пределы удобной студии. Категорически не рекомендую. Тот ж CI и многие другие ходовые вещи требуют возможности сборки без Visual Studio, так что полностью исключать правку файлов текстовых форматов вручную, по-моему, не следует. monstrillaЗаменил на ВПФ-гуид - ничего не поменялось. Логичнее не заменить, а добавить, ProjectTypeGuids не случайно назван во множественном числе. Но лучше полностью покажите тот фрагмент, где присутствует {8a3e7e11-6f1c-4271-b17b-236ded62e401}, мне кажется, что такого быть не должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 10:47 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Ilya81, автор// Управление общими сведениями о сборке осуществляется с помощью // набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, // связанные со сборкой. [assembly: AssemblyTitle("ResTest")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ResTest")] [assembly: AssemblyCopyright("Copyright © 2015")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Параметр ComVisible со значением FALSE делает типы в сборке невидимыми // для COM-компонентов. Если требуется обратиться к типу в этой сборке через // COM, задайте атрибуту ComVisible значение TRUE для этого типа. [assembly: ComVisible(false)] // Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM [assembly: Guid("8a3e7e11-6f1c-4271-b17b-236ded62e401")] // Сведения о версии сборки состоят из следующих четырех значений: // // Основной номер версии // Дополнительный номер версии // Номер построения // Редакция // // Можно задать все значения или принять номер построения и номер редакции по умолчанию, // используя "*", как показано ниже: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] Я дальше студии пока не суюсь, мне ее пока категорически хватает. Но просто интересно, что такое CI? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 10:51 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
monstrillaЗаменил на ВПФ-гуид - ничего не поменялось. Это не гуид проекта, это ProjectTypeGuids. Отдельное свойство проекта. И если библиотека ресурсов содержит темы компонентов, то в Assembly.cs нужно добавить Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 10:57 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Я имею в виду открыть сам csproj-файл текстовым редактором, AssemblyInfo здесь не причём. Это ведь не специальный формат Visual Studio, его схема описана в %windir%\Microsoft.NET\Framework64\v4.0.30319\MSBuild\Microsoft.Build.Core.xsd. Можно, конечно, вместо этого использовать заготовки вроде User control library и т. п., но вообще ограничиваться существующими заготовками проектов не рекомендую. monstrillaЯ дальше студии пока не суюсь, мне ее пока категорически хватает. Но просто интересно, что такое CI? Описание . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 11:01 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, словарь ресурсов пока не содержит тем. Тега ProjectTypeGuids у меня нет, есть только Код: c# 1.
Тоже не вижу такого гуида в списке. Заменил на ФПВ гуид. Не вижу изменений и не вполне понимаю, что должно произойти. Станет возможно добавлять словарь ресурсов прямо в студии? Со стилями вроде все понятно. А вот с картинками возникли проблемы. В проекте со словарем добавил пару картинок, пытаюсь сослаться на них так же как на словарь ресурсов - картинки не видятся. Работает: Код: xml 1. 2. 3.
Не работает: Код: xml 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 11:18 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Add1.png какой build action? Должен быть resource. ProjectGuid здесь не причём, если нет элемента ProjectTypeGuids, добавьте. Рекомендую вариант Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 11:27 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Ilya81, Действие при построении - Resource Копировать в выходной файл - всегда копировать Не работает :( Добавил ваш код в секцию <PropertyGroup>, туда же где расположен тег <ProjectGuid>. Проект вообще перестал открываться. Студия 2010 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 11:41 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
monstrilla, Самый простой вариант сделать проект под такую библиотеку - создать проект с типом WPF Application, потом удалить из него App.xaml и MainWindow.xaml, и в свойствах проекта тип проекта сменить на Class Library. Далее все работает почти само по себе: Код: xml 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 12:02 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
png никуда копировать не надо. monstrillaПроект вообще перестал открываться. Студия 2010 Обычно Visual Studio пишет, в какой строке ошибка. Покажите фрагмент вокруг этой строки, лучше весь PropertyGroup. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 12:02 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Ilya81, У меня приоритет сейчас добиться, чтоб картинка из сторонней сборки отображалась. Попробую позже, пока воспользуюсь советом СВП. Что хоть должен давать этот код? Чего добиваемся? Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 12:35 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
monstrillaЧто хоть должен давать этот код? Чего добиваемся? Наличия в списке добавляемых файлов словарей ресурсов и других характерных для WPF файлов. Конечно, есть вариант Сон Веры Павловнысоздать проект с типом WPF Application, потом удалить из него App.xaml и MainWindow.xaml, и в свойствах проекта тип проекта сменить на Class Library. и если нет времени, стоит им воспользоваться. Но далее рекомендую научиться пользоваться не только существующими заготовками и редактированием через GUI. В конце концов, некоторые возможности файлов проекта не редактируются через GUI в Visual Studio в принципе, например, условные ссылки на другие сборки. А так, следует свериться со схемой в %windir%\Microsoft.NET\Framework64\v4.0.30319\MSBuild, там, скажем, элементы идут в определённой последовательности, ProjectTypeGuids, например, после ProjectGuid и ProjectType. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 13:05 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Ilya81, Вариант СВП работает отлично, в рабочем проекте видны и файл ресурсов и картинки из сторонней сборки. Спасибо. Визуально отличий между проектами, генерящими сборку с ресурсами не вижу. Заметил только, что если подключить обе сборки в проект и после pack://application:,,,/ нажать ctrl+space , то в выпадающем списке будет видна только "хорошая" сборка, т.е. та, для которой работает и файл ресурсов и картинки. "Плохой" сборки в списке нет и с ней работает только файл ресурсов. Возможно я что-то поломал в файле проекта, возможно он изначально был кривой, не знаю. В папке MSBuild в файле Microsoft.Build.Commontypes.xsd нашел следующие строки Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Не ориентируюсь в xsd, но поместил ваши ProjectTypeGuids после ProjectGuid в .csproj-файле. Собсно, я так уже делал и получил опять неоткрывающийся проект. Ошибка в окне вывода такая, студия не говорит в какой строке ошибка. , Код: c# 1. 2. 3. 4. 5. 6. 7.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 13:50 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Если далее AppDesignerFolder и прочие указанные, то ProjectTypeGuids следует поместить последним элементом из указанных в PropertyGroup (для msb:Property указан sequence). А тот вариант содержит заготовку, где ProjectTypeGuids уже проставлены, так что можете посмотреть, где они там размещены. Кому как удобнее, конечно, но если уже создан проект, в него добавлены файлы и reference'ы, но нужно поменять его тип, мне кажется удобнее подправить ProjectTypeGuids в файле проекта, чем подставлять всё остальное в проект из другой заготовки. GUI-средства в таких случаях не всегда удобны. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 14:17 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Получилось сменить тип проекта, там обратный порядок нужен <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> Но картинки из такого проекта так и не видны и сама сборка через ctrl+space не видна ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 14:21 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
monstrillaНо картинки из такого проекта так и не видны Покажите фрагмент из .csproj-файла, где указан файл Add1.png (редактировать можно будет через GUI, если понадобится). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 14:26 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Вобщем, создал проект новый и добился того, что работает и как СВП написал и ваш вариант. Всем спасибо. А изначальный проект так и не работает. Сравнивал коммандером файлы проекта - идентичные (кроме гуида и имени проекта, есесно) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 14:57 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
В предыдущем посте прикрепился файл проекта - это не то. Работает Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
Не работает Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
Криво работающая сборка так и не видна через контрол+пробел. Магия. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 15:00 |
|
Организация ресурсов и стилей для нескольких проектов
|
|||
---|---|---|---|
#18+
Если Add1.png в подкаталоге Resources, то будет: Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 15:15 |
|
|
start [/forum/topic.php?fid=21&msg=38900801&tid=1440906]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
446ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 556ms |
0 / 0 |