У меня есть этот код:C# Как скопировать файл без изменения исходного имени файла
var GetDLLFilesForDir = Directory.GetFiles(directory, "*.dll", SearchOption.AllDirectories).Where(s => s.EndsWith(".dll"));
foreach (string DLLFilesForDir in GetDLLFilesForDir)
{
File.Copy(DLLFilesForDir, Path.Combine(SADIR, DLLFilesForDir), true);
}
Но как вы можете видеть, когда я иду, чтобы скопировать его, я получаю сообщение об ошибке. Я знаю, что ошибка вызвана «DLLFilesForDir», потому что она пытается объединить путь, используя «DLLFilesForDir», когда я уже использую этот файл.
Проблема заключается в том, мне нужно имя файла, чтобы остаться такой же, так что если я изменил:
Path.Combine(SADIR, DLLFilesForDir);
Для этого:
Path.Combine(SADIR, DLLFilesForDir + "1");
Будет ли это изменить имя файла, который копируется потому что тогда у меня было бы «filename1.dll» вместо «filename.dll», и мне нужно последнее.
Помогите оценить, спасибо.
Можете ли вы быть более ясным. Почему копия не работает? Поскольку DLL уже загружена в процесс? Если это так, вам просто нужно убедиться, что все, что его загрузило, сначала выгружает. –
Проблема в том, что каталог назначения не существует? Попробуйте Debug.WriteLine (Path.Combine (SADIR, DLLFilesForDir)), чтобы узнать, что такое пункт назначения. – Neil
Ошибка, которую я получаю: процесс не может получить доступ к файлу «filename.dll», потому что он используется другим процессом, он не используется каким-либо другим процессом, кроме моей собственной программы. – user2784566