私は C# を初めて使用し、デプロイ ソフトウェアのプラグインでカスタム タスクを作成するように依頼されましたが、これについて頭を悩ませることはできません。展開サーバーの特定のディレクトリにあるデータを出力ログに記録しようとしているだけですが、ログに記録された最初のファイルしか取得できません (そして、テキストでさえ文字化けしています。どういうわけか間違ったバイトを読み込んでいると思います) 「追加情報: コレクションが変更されました。列挙操作が実行されない可能性があります」に関する奇妙なエラーが発生する前に。
これが私がこれまでに持っているコードです:
class Clense : AgentBasedActionBase
{
public string dataPath { get; set; }
protected override void Execute()
{
IFileOperationsExecuter agent = Context.Agent.GetService<IFileOperationsExecuter>();
GetDirectoryEntryCommand get = new GetDirectoryEntryCommand() { Path = dataPath };
GetDirectoryEntryResult result = agent.GetDirectoryEntry(get);
DirectoryEntryInfo info = result.Entry;
// info has directory information
List<FileEntryInfo> myFiles = info.Files.ToList();
foreach (FileEntryInfo file in myFiles)
{
Byte[] bytes = agent.ReadFileBytes(file.Path);
String s = Encoding.Unicode.GetString(bytes);
LogInformation(s);
// myFiles.Remove(file);
}
}
}
これを修正するために私に何ができるか知っている人はいますか?
アップデート
myFiles.Remove() を削除するとエラーが修正され (ループが多すぎると思っていましたが、そうではありません)、ファイルごとに 1 つのログ エントリを取得しているように見えますが、メッセージはまだ文字化けしています。なぜこれが起こっているのか誰にも分かりますか?