2

私はこのコードを持っています:

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");

「filename.dll」の代わりに「filename1.dll」があり、後者が必要なため、コピーされるファイルの名前を変更しますか。

ありがとうございます。

4

1 に答える 1

2

あなたの

File.Copy(DLLFilesForDir, Path.Combine(SADIR, DLLFilesForDir), true);

File.Copy(DLLFilesForDir, Path.Combine(SADIR, Path.GetFileName(DLLFilesForDir)), true);


Path.Combine() のMSDN ページから:

path2 に絶対パスが含まれている場合、このメソッドは path2 を返します。

したがって、ファイルをそれ自体にコピーしようとしています^^

于 2013-09-19T09:53:20.037 に答える