Что такое сборка смешанного режима?
Я смотрю на System.Data.SQLite скачать страница, и он показывает сборку смешанного режима для .NET 4 и регулярную (I предполагать). Мой проект, который будет использовать эту библиотеку, - это все .NET 4, которые будут скомпилированы для x86.
У меня есть 2 вопроса:
- Что такое сборка в смешанном режиме? Google возвращает запутанный массив ответов, ни один из которых не имеет большого смысла. В одном ответе говорится, что все это касается смешивания собственного и управляемого кода, в то время как другие утверждают, что он предназначен для микширования версий .Net.
- Какую загрузку я должен получить для своей ситуации?
Ответы
Ответ 1
http://msdn.microsoft.com/en-us/library/x0w2664k.aspx
1) Allways сначала проверяет msdn. Смешанный режим означает, что сборка может запускать управляемый и неуправляемый код.
2) Настройка для 32-разрядной версии Windows (.NET Framework 4.0)
http://system.data.sqlite.org/sqlite-netFx40-setup-bundle-x86-2010-1.0.74.0.exe
Вы сами ответили на этот вопрос: "Мой проект, который будет использовать эту библиотеку, - это все .NET 4, которое будет скомпилировано для x86".
Ответ 2
Существует способ создания смешанной моды из чистого ИЛ. Последняя часть создания сборки с использованием отражения включает вызов AssemblyBuilder.Save. Если вы просто передадите PortableExecutableKinds.Required32Bit для аргумента portableExecutableKind, вы создадите сборку в смешанном режиме. Вы можете избежать возникающих проблем, также передавая PortableExecutableKinds.ILOnly. то есть.
assembly_bldr.Save(exe_name, PortableExecutableKinds.Required32Bit | PortableExecutableKinds.ILOnly, ImageFileMachine.I386 );
Излишне говорить, что эту информацию трудно выиграть...
Ответ 3
Взято из официального FAQ
(14) Что такое сборка в смешанном режиме?
Комбинация смешанного режима представляет собой динамическую библиотеку ссылок, которая содержит оба управляемый код и собственный код для конкретной архитектуры процессора. Поскольку он содержит собственный код, он может быть загружен только в процесс который соответствует архитектуре процессора, для которой он был скомпилирован. Также см этот вопрос StackOverflow.
Он даже ссылается на этот вопрос!