Возникают ли накладные расходы при загрузке сборок вручную во время выполнения?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Возникают ли накладные расходы при загрузке сборок вручную во время выполнения?

Сообщение Anonymous »

Без какого-либо вмешательства по умолчанию приложение .net ищет сборки (.dll) в том же каталоге, в котором оно запущено.
Мне нравится, когда моя папка сборки не загружен 200 файлов, поэтому я решил переместить их в подпапку под названием «libs».
Вот как я перемещаю их при сборке POST:

Код: Выделить всё

setlocal enabledelayedexpansion

IF NOT EXIST "$(OutputPath)libs" mkdir "$(OutputPath)libs"

for %%F in ("$(OutputPath)*.*") do (
set "filename=%%~nxF"

if /I NOT "!filename!"=="$(TargetName).exe" (
if /I NOT "!filename!"=="$(TargetName).dll" (
if /I NOT "!filename!"=="$(TargetName).pdb" (
if /I NOT "!filename!"=="$(TargetName).dll.config" (
if /I NOT "!filename!"=="$(TargetName).deps.json" (
if /I NOT "!filename!"=="$(TargetName).runtimeconfig.json" (
move "%%F" "$(OutputPath)libs"
))))))
)
Затем в статическом конструкторе программы я загружаю сборки вручную с помощью Reflection:

Код: Выделить всё

 const string LIB_FOLDER = "libs";
const string ASS_EXT = ".dll";

static Program()
{
AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;
}

private static Assembly? OnAssemblyResolve(object? sender, ResolveEventArgs args)
{
AssemblyName assemblyName = new(args.Name);
string assemblyNameStr = assemblyName.Name + ASS_EXT;
string assemblyPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LIB_FOLDER, assemblyNameStr);

if (File.Exists(assemblyPath))
{
return Assembly.LoadFrom(assemblyPath);
}

return null;
}
Приведет ли такая загрузка сборок вручную к дополнительным расходам?
Должен ли я отказаться от мечты очистить папку сборки, оставив все библиотеки DLL там, где они сгенерированы?


Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-runtime
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»