AppDomain.CurrentDomain.AssemblyResolve, запрашивающий сборку .resources?

с помощью кода Как встроить вспомогательную сборку в EXE-файл , предоставленный csharptest.net, я создал специальный преобразователь сборок и встроил свои сборки в свои ресурсы.

Я могу успешно разрешить свои сборки, используемые в, но каким-то образом AppDomain.CurrentDomain.AssemblyResolve запрашивает сборку с именем «AppName.resources», а именно «MyProgram.resources, Version = 0.15.3992.31638, Culture = en-US, PublicKeyToken = null» которую я не знаю, как решить?

Я попытался отключить загрузку моих пользовательских сборок из ресурсов (поместил все библиотеки DLL моей сборки в программный каталог) и просто включил AppDomain.CurrentDomain.AssemblyResolve, но он все еще запрашивал это.

Я ' Я немного запутался в этом, буду признателен, если вы мне поможете.

Вот мой код для заинтересованных:

static Assembly ResolveAssemblies(object sender, ResolveEventArgs args)
{
    Assembly assembly = null;
    string name = args.Name.Substring(0, args.Name.IndexOf(','));
    if (name == "MyProgram.resources") return null;
    else name = string.Format("MyProgram.Resources.Assemblies.{0}.dll", name);

    lock (_loadedAssemblies)
    {
        if (!_loadedAssemblies.TryGetValue(name, out assembly))
        {
            using (Stream io = Assembly.GetExecutingAssembly().GetManifestResourceStream(name))
            {
                if (io == null)
                {
                    MessageBox.Show("MyProgram can not load one of it's dependencies. Please re-install the program", string.Format("Missing Assembly: {0}", name), MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Environment.Exit(-1);
                }
                using (BinaryReader binaryReader = new BinaryReader(io))
                {
                    assembly = Assembly.Load(binaryReader.ReadBytes((int)io.Length));
                    _loadedAssemblies.Add(name, assembly);
                }
            }
        }
    }

    return assembly;
}

26
задан Community 23 May 2017 в 12:18
поделиться