私はこれから地獄を検索しましたが、ファイルが明らかに存在し、File.ReadAllBytesで開くことができるのにFileNotFoundExceptionが発生する理由を完全に理解することはできません
これは私の現在のコードです:
AppDomainSetup domainInfo = new AppDomainSetup();
domainInfo.ApplicationBase = PluginDirectory;
Evidence adEvidence = AppDomain.CurrentDomain.Evidence;
AppDomain pluginDomain = AppDomain.CreateDomain("pluginDomain", adEvidence, domainInfo);
foreach (FileInfo file in files)
{
if (m_AssemblyIgnoreList.Contains(file.Name))
continue;
byte[] assemblyBytes = File.ReadAllBytes(file.FullName);
//Assembly plugin = Assembly.LoadFrom(file.FullName);
Assembly plugin = pluginDomain.Load(assemblyBytes);
LoadPlayerEvents(plugin);
}
AppDomain.Unload(pluginDomain);
プラグインフォルダー内からすべての.dllファイルをロードし、属性付きのタイプと関数の束をロードしようとしています。
Assembly.LoadFrom(file.FullName)を使用すると、属性付きの型と関数の読み込みがファイルで機能します。ただし、pluginDomain.Load(assemblyBytes)により、次の例外が発生します。
FileNotFoundException: Could not load file or assembly 'Example Mod, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File.ReadAllBytesは完全に機能するため、指定されたファイルを確実に見つけることができます。例外として、ロードしようとしているアセンブリのフルネームが表示されます。したがって、依存関係をロードできないという結論に達しました。
すべての依存関係はすでにCurrentDomainにロードされています。ただし、これらの依存関係を.dllのすぐ隣に配置した場合でも(これは、とにかく上記の.dllのビルド中に発生します)、同じ例外が生成されます。
ファイルが明らかに存在するのに、なぜこの例外が発生するのですか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加