Уменьшить дисковое пространство веб-приложения, веб-приложения и консольного приложения MVC на IIS - PullRequest
1 голос
/ 07 июня 2019

У меня есть решение, которое развертывает смесь веб-приложений, веб-сайтов и консольного приложения в IIS. Все сайты / приложения используют несколько общих проектов, сборки которых копируются несколько раз, когда я публикую в папку bin каждого сайта. Это работает, но из соображений стоимости хостинга я бы хотел уменьшить размер папки IIS. Как я могу использовать общую папку? Я не хочу выводить в папку, а затем ссылаться на DLL (в отличие от ссылки на projecT), и я не хочу использовать GAC (у меня есть 100 или эти сайты, и я хочу сохранить все зависимости в собственный сайт).

Спасибо,

1 Ответ

1 голос
/ 07 июня 2019

С Документы Microsoft :

.NET Framework предоставляет событие AppDomain.AssemblyResolve для приложений, которым требуется больший контроль над загрузкой сборки. Обрабатывая это событие, ваше приложение может загрузить сборку в контекст загрузки из-за пределов обычных путей проверки, выбрать, какую из нескольких версий сборки загрузить, создать динамическую сборку и вернуть ее, и т. Д.

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

AppDomain.CurrentDomain.AssemblyResolve += CustomAssemblyResolve;

private Assembly CustomAssemblyResolve(object sender, ResolveEventArgs args)
{
   //Load assembly from shared folder

   //Example:
   return Assembly.LoadFrom($@"C:\commonassemblies\{filename}");
}

Еще одна статья с полезной информацией по этому вопросу: Загрузка сборок .NET из отдельных папок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...