Удалите DLL-файл, загруженный приложением .NET Framework.C#

Место общения программистов C#
Ответить
Anonymous
 Удалите DLL-файл, загруженный приложением .NET Framework.

Сообщение Anonymous »

У меня есть приложение, использующее .NET Framework 4.6.2.
Это служебное приложение, которое используется для обновления другого программного обеспечения, расположенного в той же папке. Для этого он загружает zip-архив через вызов API, а затем распаковывает его в папку сразу после удаления всего существующего содержимого.
В рамках этого приложения ему необходимо прочитать некоторые файлы JSON перед процессом извлечения (поскольку он также распаковывает некоторое программное обеспечение в другие каталоги, указанные внутри json), для чего я использую Newtonsoft.JSON. Проблема в том, что Newtonsoft.Json.dll — это один из файлов в архиве. Потенциально его необходимо обновить, если мы начнем использовать более новую версию библиотеки (она используется как приложением обновления, так и другими исполняемыми файлами, которые находятся в этой папке).
После создания несколько вызовов с помощью Newtonsoft.Json в приложении обновления, я знаю, что больше не буду его использовать, поэтому надеялся удалить его и распаковать из .zip. Однако файл заблокирован приложением, поэтому я не могу удалить его с помощью простого метода FileInfo.delete(). В ошибке говорится, что «Доступ к пути Newtonsoft.Json.dll запрещен» (по понятным причинам)
Могу ли я каким-либо образом принудительно удалить его? Повторю и подчеркну: к тому моменту, когда я хочу удалить .dll, я уверен, что не буду использовать какие-либо его функции до следующего запуска.
Или, альтернативно, есть ли какой лучший обходной путь для этого сценария вы бы порекомендовали?
UPD: Сейчас я рассматриваю два альтернативных варианта:
1) Использование Costura. Фоди, чтобы встроить dll в приложение и сделать ее независимой от .dll в папке
2) Переименование неудачно извлеченных файлов в filename.dll.new и запуск пакетного сценария, который найдет их все и заменит (запускается (отсоединяется) приложением перед выходом)

Подробнее здесь: https://stackoverflow.com/questions/788 ... mework-app
Ответить

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

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

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

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

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