Что за программа reference assemblies для чего она нужна

Содержание

существует три атрибута версии сборки. Что такое различия? Это нормально, если я использую AssemblyVersion и игнорировать все остальное?

указывает версию о том, что.

указывает компилятору использовать определенный номер версии для Ресурс версии файла Win32. Версия файла Win32 не должна совпадать с номером версии сборки.

определяет дополнительные сведения о версии для манифеста сборки.

автор: Ian Kemp

7 ответов

AssemblyVersion

где будут выглядеть другие сборки, ссылающиеся на вашу сборку. Если это число изменяется, другие сборки должны обновить свои ссылки на вашу сборку! The — это.

Я использую формат:майора.минор!—14—>. Это привело бы к:

[assembly: AssemblyVersion(«1.0»)]

AssemblyFileVersion

используется для развертывания. Это число можно увеличить для каждого развертывания. Он используется при установке программы. Используйте его, чтобы пометить сборки с одинаковыми AssemblyVersion , но созданных из разных сборок.

Assemblies™ Overview

в Windows его можно просмотреть в свойствах файла.

если возможно, пусть он будет сгенерирован MSBuild. AssemblyFileVersion является необязательным. Если не задано, используется AssemblyVersion.

Я использую формат:майора.незначительный.пересмотр.build, где я использую ревизию для стадии разработки (Альфа, Бета, RC и RTM), пакетов обновления и горячих исправлений. Это привело бы к:

[assembly: AssemblyFileVersion(«1.0.3100.1242»)]

AssemblyInformationalVersion

версия продукта сборки. Это версия можно использовать при разговоре с клиентами или для отображения на вашем сайте. Эта версия может быть строкой, например’ 1.0 Release Candidate’.

анализ кода будет жаловаться на это (CA2243) — сообщается в Microsoft (не исправлено в VS2013).

на AssemblyInformationalVersion является необязательным. Если не дано, AssemblyFileVersion используется.

Я использую формат:майора.minor [редакция в виде строки]. Это привело бы к:

[assembly: AssemblyInformationalVersion(«1.0 RC1»)]
автор: Rémy van Duijkeren

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

вот три основных атрибута сборки, связанные с версией:

// Assembly mscorlib, Version 2.0.0.0 [assembly: AssemblyFileVersion(«2.0.50727.3521»)] [assembly: AssemblyInformationalVersion(«2.0.50727.3521»)] [assembly: AssemblyVersion(«2.0.0.0»)]

по соглашению, четыре части версии называются Основная Версия, Версии, построить и редакция.

на AssemblyFileVersion is предназначен для уникальной идентификации сборки индивидуальная сборка

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

Tooltips in MacVector: restriction sites, features and reference assemblies

на моем нынешнем проект у нас есть сервер сборки кодирует номер списка изменений из нашего репозитория управления версиями в части сборки и ревизии AssemblyFileVersion. Это позволяет нам напрямую сопоставлять сборку с ее исходным кодом для любой сборки, сгенерированной сервером сборки (без необходимости использовать метки или ветви в системе управления версиями или вручную вести записи выпущенных версий).

этот номер версии хранится в ресурсе версии Win32 и может быть виден при просмотре страницы свойств Проводника Windows для сборки.

CLR не заботится и не исследует AssemblyFileVersion.

на AssemblyInformationalVersion предназначен для представления версии всего продукта

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

» например, версия 2.0 продукта может содержать несколько сборок; одна эти сборки помечены как версия 1.0, так как это новая сборка это не было отправлено в версии 1.0 тот же продукт. Как правило, вы устанавливаете основные и второстепенные части этой версии число представлять публичную версию вашего продукта. Тогда вы инкремент части сборки и ревизии каждый раз пакет полный продукт с все его сборка.» — Jeffrey Richter, [CLR via C# (второе издание)] p. 57

среда CLR не заботится и не рассматривает AssemblyInformationalVersion.

Читайте также:
Аварда программа что это

на AssemblyVersion — единственная версия, о которой заботится CLR (но она заботится обо всем AssemblyVersion )

AssemblyVersion используется средой CLR для привязки к строго именованным сборкам. Он хранится в таблице метаданных манифеста AssemblyDef встроенной сборки и в таблица AssemblyRef любой сборки, которая ссылается на нее.

это очень важно, потому что это означает, что когда вы ссылаетесь на строго именованную сборку, вы тесно связаны с определенной AssemblyVersion этой сборки. Вся AssemblyVersion должна быть точным соответствием для успешного выполнения привязки. Например, если вы ссылаетесь на версию 1.0.0.0 строго именованной сборки во время сборки, но только версия 1.0.0.1 этой сборки доступно во время выполнения, привязка будет выполнена! (Вы затем придется обойти это, используя Перенаправление Привязки Сборок.)

путаница в том, что вся AssemblyVersion должны совпадать. (Да, это так.)

существует небольшая путаница вокруг того, должна ли вся AssemblyVersion быть точным соответствием, чтобы сборка была загружена. Некоторые люди находятся под ложным убеждением, что только большая и Малая части ассемблер-версии должны соответствовать друг другу, чтобы связывание было успешным. Это разумно предположение, однако, в конечном счете неверно (начиная с .NET 3.5), и тривиально проверить это для вашей версии среды CLR. Просто выполните этот пример кода.

на моей машине вторая сборочная нагрузка терпит неудачу, и последние две строки журнала слияния совершенно ясно, почему:

.NET Framework Version: 2.0.50727.3521 — Attempting to load assembly: Rhino.Mocks, Version=3.5.0.1337, Culture=neutral, PublicKeyToken=0b3305902db7183f Successfully loaded assembly: Rhino.Mocks, Version=3.5.0.1337, Culture=neutral, PublicKeyToken=0b3305902db7183f — Attempting to load assembly: Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f Assembly binding for failed: System.IO.FileLoadException: Could not load file or assembly ‘Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: ‘Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f’ === Pre-bind state information === LOG: User = PhoenixDani LOG: DisplayName = Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f (Fully-specified) LOG: Appbase = [. ] LOG: Initial PrivatePath = NULL Calling assembly : AssemblyBinding, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. === LOG: This bind starts in default load context.

LOG: No application configuration file found. LOG: Using machine configuration file from C:WindowsMicrosoft.NETFramework64v2.0.50727configmachine.config. LOG: Post-policy reference: Rhino.Mocks, Version=3.5.0.1336, Culture=neutral, PublicKeyToken=0b3305902db7183f LOG: Attempting download of new URL [. ]. WRN: Comparing the assembly name resulted in the mismatch: Revision Number ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

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

» при загрузке сборки среда CLR автоматически найдет последнюю версию установленная версия обслуживания соответствует основной / минорной версии ассамблея запрашивается.» — Jeffrey Richter, [CLR via C# (второе издание)] p. 56

это было поведение в бета-версии 1 1.0 CLR, однако эта функция была удалена до выпуска 1.0 и не удалось повторно поверхность .Чистая 2.0:

«примечание: Я только что описал, как вы следует подумать о номерах версий. К сожалению, CLR не лечит номера версий таким образом. [в сетях 2.0], среда CLR обрабатывает номер версии как непрозрачное значение, и если сборка зависит от версии 1.2.3.4 другого сборка, CLR пытается загрузить версия 1.2.3.4 (только без привязки перенаправление на месте). Однако, Microsoft планирует изменить Погрузчик среды CLR в будущая версия так что он загружает последние сборка / ревизия для данного major / minor версия сборки. Например, о будущей версии среды CLR, если загрузчик пытается найти версию 1.2.3.4 сборки и версии 1.2.5.0 существует, загрузчик с автоматически забрать последнюю обслуживающая версия. Это будет очень добро пожаловать в загрузчик CLR-I потому что ждать нельзя.» — Jeffrey Richter, [CLR via C# (второе издание)] p. 164 (Выразительность мой)

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

поэтому я написал Джеффу Рихтеру по электронной почте и спросил его напрямую — я подумал, что если кто-нибудь знает, что произошло, это будет ему.

он ответил в течение 12 часов, в субботу утром не менее, и пояснил, что загрузчик .NET 1.0 Beta 1 действительно реализовал этот «автоматический механизм отката» для сбора последней доступной сборки и пересмотра сборки, но это поведение было отменено до отправки .NET 1.0. Позже он должен был возродить это, но он не сделал этого до того, как CLR 2.0 отправлен. Затем появился Silverlight, который занял приоритет для команды CLR, поэтому эта функциональность задержалась дальше. Тем временем, большинство людей, которые были вокруг в дни CLR 1.0 Beta 1, с тех пор переехали, поэтому маловероятно, что это увидит свет дня, несмотря на всю тяжелую работу, которая уже была вложена в него.

Читайте также:
Supl20services что это за программа на Андроид

текущее поведение, похоже, здесь, чтобы остаться.

также стоит отметить из моего обсуждения с Джеффом, что AssemblyFileVersion был добавлен только после удаления механизма «автоматического отката вперед» — потому что после 1.0 Beta 1 любой изменение в AssemblyVersion было разрушительным изменением для ваших клиентов, тогда было негде безопасно хранить ваш номер сборки. AssemblyFileVersion — это безопасное убежище, так как оно никогда автоматически не рассматривается CLR. Возможно, это яснее, имея два отдельных номера версий с отдельными значениями, А не пытаясь сделать это разделение между основными/второстепенными (разрыв) и сборкой/ревизией (неразрывными) частями AssemblyVersion.

нижняя строка: Подумайте внимательно о том, когда вы меняете свой AssemblyVersion

мораль заключается в том, что если вы отправляете сборки, на которые будут ссылаться другие разработчики, вам нужно быть очень осторожным, когда вы делаете (и не делаете) изменение AssemblyVersion этих сборок. Любые изменения в AssemblyVersion будут означать, что разработчикам приложений придется либо повторно скомпилировать новую версию (чтобы обновить эти записи AssemblyRef), либо использовать перенаправление привязки сборки вручную переопределить привязку.

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

просто еще раз взгляните на атрибуты версии на mscorlib:

// Assembly mscorlib, Version 2.0.0.0 [assembly: AssemblyFileVersion(«2.0.50727.3521»)] [assembly: AssemblyInformationalVersion(«2.0.50727.3521»)] [assembly: AssemblyVersion(«2.0.0.0»)]

обратите внимание, что это AssemblyFileVersion, который содержит все интересное обслуживание информация (это часть ревизии этой версии, которая сообщает вам, какой пакет обновления вы используете), между тем AssemblyVersion фиксируется на скучном старом 2.0.0.0. Любое изменение AssemblyVersion заставит каждое приложение .NET ссылаться на mscorlib.dll для повторной компиляции против новой версии!

автор: Daniel Fortunov

AssemblyVersion в значительной степени остается внутренним для .NET, в то время как AssemblyFileVersion это то, что Windows видит. Если перейти к свойствам сборки, находящейся в каталоге, и перейти на вкладку версия, то AssemblyFileVersion это то, что вы увидите наверху. Если вы сортируете файлы по версиям, это то, что используется Explorer.

на AssemblyInformationalVersion сопоставляется с » версией продукта «и предназначен для чисто»человеческого использования».

AssemblyVersion конечно, самое важное, но я бы не пропустил AssemblyFileVersion , либо. Если вы не предоставляйте AssemblyInformationalVersion , компилятор добавляет его для вас, снимая часть «ревизии» вашего номера версии и оставляя основной.незначительный.строить.

автор: Bob King

AssemblyInformationalVersion и AssemblyFileVersion отображаются при просмотре информации «версия» в файле через Проводник Windows, просматривая свойства файла. Эти атрибуты фактически компилируются в VERSION_INFO ресурс, созданный компилятором.

AssemblyInformationalVersion — значение «версия продукта». AssemblyFileVersion — это значение «версия файла».

на AssemblyVersion относится к сборкам .NET и используется загрузчиком сборок .NET, чтобы узнать, какую версию сборки загружать/связывать во время выполнения.

из них единственным, который абсолютно необходим .NET, является

автор: Scott Dorman

стоит отметить еще кое-что:

1) как показано в диалоговом окне свойств Проводника Windows для созданного файла сборки, есть два места, называемые «версия файла». В заголовке диалогового окна отображается AssemblyVersion, а не AssemblyFileVersion.

в разделе Информация о другой версии есть еще один элемент, называемый «версия файла». Здесь вы можете увидеть, что было введено как AssemblyFileVersion.

2) AssemblyFileVersion — это простой текст. Он не должен соответствовать ограничениям схемы нумерации, которые делает AssemblyVersion ( ., если хотите. Ваша система сборки должна будет заполнить токены.

кроме того, он не подлежит замене подстановочного знака, что AssemblyVersion. Если у вас просто есть значение » 3.0.1.* «в AssemblyInfo.cs, это именно то, что будет отображаться в другой информации о версии- > файл Элемент версии.

3) я не знаю, как влияет на установщик использование чего-то другого, кроме числовых номеров версий файлов.

автор: DavidM

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

например AssemblyVersion 1.0.3.* упакованный с asp.net ядро dotnet-cli

dotnet pack —version-suffix ci-7 src/MyProject

производит пакет с версией 1.0.3-ки-7, который вы можете проверить с отражением через:

CustomAttributeExtensions.GetCustomAttribute(asm);

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

Источник: askdev.ru

Что за программа reference assemblies для чего она нужна

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

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

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

Читайте также:
Программа прога что это такое

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

Разделяемые сборки находятся в глобальном кэше сборок (Global Assembly Cache). Местоположение кэша сборок отличается в зависимости от версии .NET, установленной на локальной машине. До .NET 4.0 глобальный кэш находился в каталоге C:Windowsassembly. Начиная же с версии .NET 4.0 кэш сборок размещается по пути C:WindowsMicrosoft.NETassemblyGAC_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 FilesMicrosoft SDKsWindowsv8.0AbinNETFX 4.0 Tools. И вначале перейдем в этот каталог:

C:Windowssystem32>cd C:Program FilesMicrosoft SDKsWindowsv8.0AbinNETFX 4.0 Tools

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

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

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

C:Program FilesMicrosoft SDKsWindowsv8.0AbinNETFX 4.0 Tools>gacutil -i Полное_имя_сборки

Как видно, на рисунке, в моем случае полное имя сборки C:UsersEugeneDocumentsVisual Studio 2012ProjectsSharpPersonLibraryPersonLibrarybinDebugPersonLibrary.dll. И если добавление прошло успешно, то командная строка отобразит:

Assembly successfully added to the cache

И после добавления в папке C:WindowsMicrosoft.NETassemblyGAC_MSIL мы сможем найти добавленную сборку — для нее будет создан отдельный каталог, как и для остальных сборок, который будет носить краткое имя сборки.

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

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

Источник: metanit.com

Что за программа reference assemblies для чего она нужна

Видео: Reference Assemblies

C# : ASP.NET Core 3: How To Reference 3.0.0 Assemblies In Custom Libraries?

C# : ASP.NET Core 3: How To Reference 3.0.0 Assemblies In Custom Libraries?

C# : Getting Interface Implementations In Referenced Assemblies With Roslyn

C# : Getting Interface Implementations In Referenced Assemblies With Roslyn

C# : The Reference Assemblies For Framework .NETCore, Version=v5.0 Were Not Found

C# : The Reference Assemblies For Framework .NETCore, Version=v5.0 Were Not Found

C# : MSBuild Inline Task - Reference Non-standard Microsoft Assemblies

C# : MSBuild Inline Task — Reference Non-standard Microsoft Assemblies

C# : .Net 4.6 Website Not Loading Reference Assemblies Correctly

C# : .Net 4.6 Website Not Loading Reference Assemblies Correctly

C# : Service Reference - Why Reuse Types In Referenced Assemblies

C# : Service Reference — Why Reuse Types In Referenced Assemblies

C# : Why Do I (sometimes) Have To Reference Assemblies Referenced By The Assembly I Reference?

C# : Why Do I (sometimes) Have To Reference Assemblies Referenced By The Assembly I Reference?

C# : What Install Files In Location - Program Files (x86)\Reference Assemblies\Microsoft\Framework\.

C# : What Install Files In Location — Program Files (x86)\Reference Assemblies\Microsoft\Framework\.

C# : How Do I Use A Common Log4net Reference In Assemblies Loaded At Runtime?

C# : How Do I Use A Common Log4net Reference In Assemblies Loaded At Runtime?

C# : How To Reference Assemblies Using Visual Studio Code?

C# : How To Reference Assemblies Using Visual Studio Code?

C# : How Should I Reference Assemblies From Another Solution?

C# : How Should I Reference Assemblies From Another Solution?

Get Smart With Solidworks: Automate Your Assemblies With Mate References

Get Smart With Solidworks: Automate Your Assemblies With Mate References

Reference Assemblies In F# 7

Reference Assemblies In F# 7

Report: Human Genome Reference Program Update - Deanna Church And Martin Hirst

Report: Human Genome Reference Program Update — Deanna Church And Martin Hirst

How To: Embed And Reference Several Assemblies C#

How To: Embed And Reference Several Assemblies C#

80- Removing Adaptive References Part A For INVENTOR Advanced Assemblies

80- Removing Adaptive References Part A For INVENTOR Advanced Assemblies

Sharepoint: How To Pull SharePoint 2010 Reference Assemblies For Dedicated Build Server?

Sharepoint: How To Pull SharePoint 2010 Reference Assemblies For Dedicated Build Server?

Inventor - Referencing Assembly Geometry Without Associativity

Inventor — Referencing Assembly Geometry Without Associativity

Новое видео

Сегодня смотрят

Reference assemblies что это за программа и нужна ли она

Reference assemblies

Reference assemblies что это такое

Reference assemblies что это

Популярное видео

НОВЫЙ AMONG US в РЕАЛЬНОЙ ЖИЗНИ! Бустер против Масленникова челлендж

НОВЫЙ AMONG US в РЕАЛЬНОЙ ЖИЗНИ! Бустер против Масленникова челлендж

34 минут назад

БОКСЫ ИЗ Standoff 2 В РЕАЛЬНОЙ ЖИЗНИ

БОКСЫ ИЗ Standoff 2 В РЕАЛЬНОЙ ЖИЗНИ

Лизогуб - ДЕВОЧКА УЭНСДЕЙ (Премьера клипа 2023)

Лизогуб — ДЕВОЧКА УЭНСДЕЙ (Премьера клипа 2023)

КОРОЧЕ ГОВОРЯ, ЭКСТРЕМАЛЬНО РЕВНИВЫЙ ПАРЕНЬ / АБЬЮЗЕР #roomfactory #корочеговоря

КОРОЧЕ ГОВОРЯ, ЭКСТРЕМАЛЬНО РЕВНИВЫЙ ПАРЕНЬ / АБЬЮЗЕР #roomfactory #корочеговоря

20 ч. назад

🤣СКИБИДИ ТУАЛЕТЫ ЗАХВАТИЛИ МИР ! #roblox #роблокс #skibidi #shorts

СКИБИДИ ТУАЛЕТЫ ЗАХВАТИЛИ МИР ! #roblox #роблокс #skibidi #shorts

Трендовое видео. Самое новые и популярные видеоролики на YouTube.

Источник: viux.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru