Перейти к содержимому

C windows assembly что это

  • автор:

C windows assembly что это

По способу взаимодействия с другими сборками и приложениями сборки можно разделить на две категории: закрытые и разделяемые.

Закрытые сборки это обычные сборки приложения, которые мы создаем в Visual Studio. Например, при создании библиотеки классов dll создается закрытая сборка. Впоследствии эту закрытую сборку мы можем использовать, подключив ее к другому проекту. А чтобы подключить к другому проекту, эту сборку можно просто положить рядом с исполняемым файлом и добавить в проект ссылку на нее через Add Reference. И на одной машине может быть десяток приложений, которые используют разные копии одной и той же сборки.

Если мы захотим удалить приложение, мы можем также удалить и используемую им закрытую сборку, и это не скажется на работе других приложений на локальной машине.

Иначе обстоит дело с разделяемыми сборками. По умолчанию при создании проекта visual Studio уже добавляет в проект ссылки на ряд разделяемых сборок. Открыв узел References (Ссылки). Например, Microsoft.CSharp.dll, System.dll, System.Core.dll — это все разделяемые сборки.

Разделяемые сборки находятся в глобальном кэше сборок (Global Assembly Cache). Местоположение кэша сборок отличается в зависимости от версии .NET, установленной на локальной машине. До .NET 4.0 глобальный кэш находился в каталоге C:\Windows\assembly. Начиная же с версии .NET 4.0 кэш сборок размещается по пути C:\Windows\Microsoft.NET\assembly\GAC_MSIL

Строгое имя сборки

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

  • Имя сборки без расширения
  • Номер версии. Благодаря разграничению по версии можно использовать разные версии одной и ой же сборки
  • Открытый ключ
  • Необязательное значение для культуры (при локализации сборки)
  • Цифровая подпись, которая создается с помощью хэш-значения содержимого сборки и значения секретного ключа. Секретный ключ представляет собой файл с расширением *.snk.

Благодаря строгому имени гарантируется уникальность сборки в глобальном кэше.

Чтобы создать строгое имя, можно воспользоваться инструментарием, который имеется в Visual Studio. Допустим, мы создали проект по типу Class Library (Библиотека классов). И теперь мы хотим подписать сборку, которая будет компилироваться, строгим именем. Для этого нажмем в окне Solution Explorer (Обозреватель решений) на имя проекта правой кнопкой мыши и в появившемся меню выберем пункт Properties (Свойства). На вкладке свойств выберем пункт Signing:

Создание строгого имени сборки в C#

Отметим флажок Sign the assembly (Подписать сборку), как показано на рисунке. И чтобы создать новый секретный ключ, выберем в выпадающем списке пункт New . После этого откроется окно настроек секретного ключа:

Дадим новому ключу какое-нибудь имя и нажмем ОК. После этого в структуре проекта можно будет увидеть файл ключа:

После задания сборке строгого имени ее можно добавлять в GAC. Для этого воспользуемся утилитой, которая идет в комплекте с .NET Framework, под названием gacutil.exe.

Откроем командную строку под администратором. Во-первых, найдем расположение утилиты gacutil.exe на локальной машине. У меня, например, она расположена в каталоге C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools. И вначале перейдем в этот каталог:

C:\Windows\system32>cd C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools

Теперь воспользуемся одной из команд данной утилиты. Наиболее используемые команды:

  • -i имя_сборки — установка сборки в GAC
  • -l — вывод всего списка сборок в GAC
  • -u имя_сборки — удаление сборки из GAC

Теперь вводим в командной строке команду на добавление:

C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools>gacutil -i Полное_имя_сборки

Как видно, на рисунке, в моем случае полное имя сборки C:\Users\Eugene\Documents\Visual Studio 2012\Projects\Sharp\PersonLibrary\PersonLibrary\bin\Debug\PersonLibrary.dll. И если добавление прошло успешно, то командная строка отобразит:

Assembly successfully added to the cache

И после добавления в папке C:\Windows\Microsoft.NET\assembly\GAC_MSIL мы сможем найти добавленную сборку — для нее будет создан отдельный каталог, как и для остальных сборок, который будет носить краткое имя сборки.

Теперь мы можем использовать нашу сборку из GAC. Для этого создадим какой-нибудь проект и в окне Solution Exlplorer (Обозреватель решений) нажмем на узел Referenses (Ссылки). В появившемся меню выберем Add Reference. (Добавить ссылку):

В окне добавления ссылки на сборку нажмем внизу на кнопку Browse (Обзор) и найдем в GAC нашу сборку. После этого она будет добавлена в проект, и мы сможем использовать весь заложенный в ней функционал.

Assembly что это за папка

Многие дотошные пользователи ОС Windows, рассматривая субдиректории, расположенные в системной папке Windows, могут обратить внимание на папку «Assembly», обладающую, подчас, довольно внушительными размерами. У пользователя может возникнут желание избавиться от её содержимого, что делать ни в коем случае не следует, так как находящиеся в данной директории файлы имеют важное значение для работы ОС Windows. В данном материале я расскажу, что за директория Assembly, каково её назначение, и как почистить её от ненужных файлов.

Заставка что за папка Assembly

Что за папка Assembly?

Слово «assembly» переводится с английского языка как «сборка». Соответственно, в данной директории находятся сборки программной платформы «.NET Framework» – набор библиотек и системных компонентов, предназначенных для обслуживания приложений, использующих архитектуру .NET Framework (последний являет собой комплекс сетевых сервисов и программ, активно продвигаемых компаний «Майкрософт»).

При этом данные сборки могут выступать в виде как библиотек (файлы .dll), так и исполняемых файлов (обладающих расширением .exe).

Также в директории «Assembly» довольно часто могут находиться различные обновления к ОС Виндовс, подготавливаемые для установки в операционную систему.

Вмещая целый комплекс подобных файлов папка «assembly» часто бывает раздута, обладая объёмом в несколько сот мегабайт (к примеру, у меня она составляет более 500 мегабайт). Механически удалять все находящиеся в ней файлы крайне не рекомендуется, так как после удаления приложения, работающие с архитектурой .NET Framework, могут перестать работать корректно, система начнёт сбоить и подтормаживать.

Картинка DLL

Особенности содержимого папки Assembly

В большинстве случаев, в папке Assembly находятся несколько субдиректорий, с названиями «GAC_32», «GAC_64», «GAC_MSIL», «GAC», папки «NativeImages» различных версий, а также папки для хранения временных файлов («temp», «tmp»).

Аббревиатура «GAC» расшифровывается как «Global Assembly Cache» (в переводе «глобальный кэш сборок»). Папка «GAC» применяется для работы со сборками NET Framework 1.x, папки «GAC_32» и «GAC_64» содержат .NET dll-библиотеки, задействованные для работы с 32 и 64-битной архитектурой ПК, а папка «GAC_MSIL» содержит библиотеки dll, не зависящие от какой-либо архитектуры вашей системы.

В папке «NativeImages» находятся компиляции промежуточного языка Майкрософт (под названием «MSIL») в виде собственных изображений сборок, выполненных с помощью генератора изображений «NGEN».

Содержимое папки assembly

Как почистить содержимое папки Assembly

После того, как мы выяснили, что это за папка Assembly, рассмотрим способы её очистки от лишних файлов. Как я уже писал выше, механически удалять эту папку не стоит – её содержимое имеет важное системное значения, и устранение этой директории повлечёт за собой печальные последствия для вашей ОС.

Достойным вариантом в данном случае является использование программных инструментов, специально предназначенных для очистки вашей системы от нежелательного софта. Среди них могу посоветовать CCleaner, ToolWiz Care, Ashampoo WinOptimizer и ряд других аналогов, предназначенных для удобной очистки системы от лишних файлов.

Программа Ashampoo WinOptimizer

Заключение

В данной статье было рассмотрено, что за папка под именем Assembly, каково её предназначение и функционал. Данная директория служит для хранения библиотек и системных компонентов «.NET Framework», потому важно не только беречь её содержимое, но и вовремя следить за обновлением самой программной платформы «.NET Framework». Это гарантирует стабильную работу вашей системы, а вам – наслаждение от функционала вашего ПК.

forum.farmanager.com

При копировании директории assembly\ (C:\WINDOWS\assembly) на NTFS-разделе в любую папку на FAT32 (у меня — E:\Prflogs) не копируются файлы из папок:

assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\*.*
assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll
assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.Wrapper.dll

— Ошибка создания связи!

Если то-же самое копировать на NTFS, то копируются нормально но потом вышеуказанные папки не удаляются (если только не зайти в каждую и по отдельности удалить).

Far 1.70.6.2042, система Windows XP SP2

Docent1

Мишаня Posts: 29 Joined: Tue 30 Aug, 2005 20:21 Contact:

Post by Мишаня » Sun 09 Oct, 2005 22:50

1) На FAT нету связей.
2) На NTFS повторил. Удаляется как-то странно.
Создал папки source1 и source2 (пустые)
сделал папку links , в которой сделал связи на source1 и source2
удаляем папку links.

F8 — links не удалился. лезем внутрь. внутри links осталась одна связь на source2
еще раз F8 — links не удалился. внутри пусто
еще раз F8 — links удалился.

такое ощущение, что после удаления связи процесс удаления прекращается.

Попробовал повторить с удалением в Проводнике — та же фигня. Удаляется по одной. Следовательно, не фаровский глюк.

FAR 2008, NTFS, Win2k Pro SP4

Мишаня

Docent1 Posts: 561 Joined: Thu 31 Mar, 2005 23:13 Been thanked: 1 time

Post by Docent1 » Mon 10 Oct, 2005 17:39

Естественно на FAT нету связей! Но Far то мне сообщет, что «Ошибка создания связи!»
Если у кого стоит «NET Framework v2 Beta 2 «, то там есть такие каталоги

кторые не копирутся в Farе с NTFS на FAT (как при системной функции копирования так и без), хотя FileCopyEx их копирует и TotalCmd тоже!

Но если копировать весь фолдер WINDOWS то, как не странно, все копируется кроме естесно \config.

2. С удалением тоже — Explorer and TotalCmd все удаляют без проблем!

Docent1

Docent1 Posts: 561 Joined: Thu 31 Mar, 2005 23:13 Been thanked: 1 time

Post by Docent1 » Mon 10 Oct, 2005 17:51

Глюк остается и при запуске без плагинов — Far /p

Docent1

Мишаня Posts: 29 Joined: Tue 30 Aug, 2005 20:21 Contact:

Post by Мишаня » Mon 10 Oct, 2005 20:51

Естественно на FAT нету связей! Но Far то мне сообщет, что «Ошибка создания связи!»

Прости, а что ты хотел от него услышать?? Не может создать связь на FAT, потому что файловая система не поддерживает связи, вот и говорит об этом. Попробуй Total’ом скопировать просто связь, на одном винте NTFS, из одного места в другое. Не удивлюсь, если он скопирует файлы, а не связи. (Сам проверить сейчас не могу ибо тотала нет, а ставить лень, может завтра на работе попробую) Да, возможно стоит сделать логику типа — если невозможно создать связь, копировать файлы. Это имхо был бы вариант. (Кстати, возможно в тотале именно так и сделано).

Повтори мой пример. Сегодня проверил на WinXP SP2 и на Win2003 — из проводника нормально не удаляется. (Для чистоты оговорюсь, что создавал связи FAR’ом, но мне мало верится, что проблема в механизме создания связи. Хотя надо попробовать другие варианты.).

При чем тут плагины.
ps: Самое главное забыл. Я все это говорю, предполагая, что файлы, которые ты копируешь — это связи на другие файлы (в другом каталоге). Это так?

Мишаня

Docent1 Posts: 561 Joined: Thu 31 Mar, 2005 23:13 Been thanked: 1 time

Post by Docent1 » Tue 11 Oct, 2005 14:21

1). Мишаня. мне тебя жалко. Я про Фому а ты про Ерему! Я копирую файлы, про связи я и не слышал, я не такой умный. С NTFS на FAT. А Фар их не копирует. Сообщает о каких-то связях (в гробу я их видал). Все остальные проги копируют, а Фар -нет. Даже его плуг копирует (Расшир.копирование).
2). Мы для чего тут базарим? Чтобы Фар стал лучше. Поэтому я предлагаю разработчикам (Skirde, t-rexy &Co) перед копированием вставить, напрмер. проверку FS. или еще чего, чтоб .

Docent1

Docent1 Posts: 561 Joined: Thu 31 Mar, 2005 23:13 Been thanked: 1 time

Post by Docent1 » Tue 11 Oct, 2005 14:38

Вот как это выглядит

Docent1

Docent1 Posts: 561 Joined: Thu 31 Mar, 2005 23:13 Been thanked: 1 time

Post by Docent1 » Tue 11 Oct, 2005 14:54

А вот как это выглядит на NTFS после удачного копирования (далее удаляю в Проводнике)

Docent1

Мишаня Posts: 29 Joined: Tue 30 Aug, 2005 20:21 Contact:

Post by Мишаня » Tue 11 Oct, 2005 19:07

Значится варианты:
1) На самом деле то, что ты копируешь — есть связи, знаешь ты об этом или нет. Встань фаром на эти файлы/папки и посмотри, например.
2) Фар с какого-то перепугу думает что то-что ты копируешь — есть связи.
Тогда это реальный баг.
Может еще чего придумаю. Но вот эти два варианта по крайней мере не противоречат всему вышесказанному.

Мишаня

Docent1 Posts: 561 Joined: Thu 31 Mar, 2005 23:13 Been thanked: 1 time

Post by Docent1 » Wed 12 Oct, 2005 18:36

Вот теперь правильно говоришь.

Docent1

Мишаня Posts: 29 Joined: Tue 30 Aug, 2005 20:21 Contact:

Post by Мишаня » Thu 13 Oct, 2005 12:10

мм.. Так что, что нибудь решилось? Это действительно были связи или нет?

Мишаня

Docent1 Posts: 561 Joined: Thu 31 Mar, 2005 23:13 Been thanked: 1 time

Post by Docent1 » Fri 14 Oct, 2005 12:35

Похоже бага. И в версии 1.70.6.2051 все то же самое.

Docent1

Мишаня Posts: 29 Joined: Tue 30 Aug, 2005 20:21 Contact:

Post by Мишаня » Fri 14 Oct, 2005 15:14

Это действительно были связи или нет?

Мишаня

DiRTy_GaRRy Posts: 705 Joined: Tue 05 Apr, 2005 09:26 Been thanked: 3 times Contact:

Post by DiRTy_GaRRy » Sat 15 Oct, 2005 17:46

Мишаня, да, это связи.
Docent1, а ты крыжик в диалоге копирования поставь [X] Копировать содержимое символических связей и по идее у тебя всё должно скопироваться (проверить не могу, так как нигде нет fat32). Это не баг, фар прав, что выдаёт ошибку. Хотя… Может было бы логичнее при копировании связей на не NTFS диски автоматически копировать их содержимое.

P.S. Кстати, пока только что игрался со связями обнаружил очень серьёзную ошибку приводящую к потере данных: если копировать папку-связь без включения флага Копировать содержимое символических связей, то FAR спрашивает о перезаписи файлов находящихся в данной папке, а сами файлы после этого становятся нулевого размера! Если же копировать не саму связь, а, допустим, папку уровнем выше содержащую эту связь, то всё работает нормально. Я так себе запорол всё, что содержалось в папке \assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\.

P.P.S. The FAR manager, version 1.70 alpha 6 (build 2051) — TEST ONLY!

Что за папка assembly и можно ли ее удалить?

Assembly что это за папка

Некоторые пользователи в поисках свободного места на системном диске C обращают внимание на каталог Assembly, находящийся в папке Windows. Обычно его размер составляет от нескольких сот мегабайт, до нескольких гигабайт. Именно по этому возникает желание удалить папку Assembly и тем самым освободить место на диске C.

Любой здравомыслящий пользователь Windows перед тем как что – то удалять, а тем более из системной папки, попытается разобраться что в ней храниться и к чему может привести ее удаление. Специально для таких пользователей написана данная статья.

Что хранится в папке Assembly?

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

Assembly что это за папка

Содержимое папки Assembly

Проще говоря, папка Assembly содержит файлы необходимые для работы программ, которые написаны с использованием сборки NET Framework.

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

Можно ли удалить папку Assembly?

Конечно же делать этого не стоит. Так как последствиями может стать появление ошибок при запуске некоторых программ и игр.

Если же ситуация безвыходная и папка Assembly занимает непростительно много места, в этом случае лучше воспользоваться стандартными средствами очистки локального диска C через его свойства, предварительно создав контрольную точку восстановления.

что такое папка Assembly

Очистка диска C стандартными средствами

Лучшая благодарность автору — репост к себе на страничку:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *