カスタムの場所から dll を動的にロードする次のコードを見つけました。
private void Form1_Load(object sender, EventArgs e)
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
}
private Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
{
string folderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string assemblyPath = Path.Combine(folderPath, "libs", new AssemblyName(args.Name).Name + ".dll");
if (File.Exists(assemblyPath) == false) return null;
Assembly assembly = Assembly.LoadFrom(assemblyPath);
return assembly;
}
private void button1_Click(object sender, EventArgs e)
{
var zip = ZipFile.Read("test.zip");
foreach (ZipEntry file in zip)
{
file.Extract(".", ExtractExistingFileAction.OverwriteSilently);
}
}
場合によっては、このソリューションが機能しますが、ZipDotNet dll を使用すると、次のようになります。
InnerException {"File or assembly name \"Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c\" or one of its dependencies, was not found. Operation is not supported. (Exception from HRESULT: 0x80131515)":"Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c"} System.Exception {System.IO.FileLoadException}
通過してからif (File.Exists(assemblyPath) == false) return null;
、Ionic.Zip.dll の依存関係をロードする際の問題だと思いますか? それらもどのように解決しますか?