Вы бы встроили свои собственные DLL в качестве ресурсов.
Затем во время выполнения вам придется извлечь эти собственные DLL во временную папку;у вас не обязательно есть доступ на запись к папке приложения при запуске приложения: например, Windows Vista или Windows 7 и UAC.Как следствие, вы будете использовать этот вид кода для загрузки их по определенному пути:
public static class NativeMethods {
[DllImport("kernel32")]
private unsafe static extern void* LoadLibrary(string dllname);
[DllImport("kernel32")]
private unsafe static extern void FreeLibrary(void* handle);
private sealed unsafe class LibraryUnloader
{
internal LibraryUnloader(void* handle)
{
this.handle = handle;
}
~LibraryUnloader()
{
if (handle != null)
FreeLibrary(handle);
}
private void* handle;
} // LibraryUnloader
private static readonly LibraryUnloader unloader;
static NativeMethods()
{
string path;
// set the path according to some logic
path = "somewhere/in/a/temporary/directory/Foo.dll";
unsafe
{
void* handle = LoadLibrary(path);
if (handle == null)
throw new DllNotFoundException("unable to find the native Foo library: " + path);
unloader = new LibraryUnloader(handle);
}
}
}