2012-01-12 3 views
-3

хорошо я работаю для PocketPC и имеет библиотеку (System.data) и (System.data.sqlclient), то они не являются полными библиотеки, то мне нужно использовать System.data (полная библиотека), но теперь у меня есть 2 вызова DLL (System.data) и в полной библиотеке также есть System.data.sqlclient, тогда у меня проблема с ними, поэтому , если я использую только полную библиотеку, у меня есть другая проблема, потому что System.data (нет полной библиотеки) имеет одну вещь, которую System.data (полная библиотека) не имеет, поэтому мне нужно использовать 2 dll (с тем же пространством имен), и у меня проблемы ...Можно ли изменить пространство имен dll?

+2

Пожалуйста, очистите свой пост с помощью лучшей грамматики, трудно понять ваш вопрос, и его можно закрыть. Если он закрыт, вы все равно можете изменить свой вопрос, и его можно снова открыть. –

+0

Является ли «неполным» 'System.Data' подмножеством« полной »' System.Data'? Что произойдет, если вы просто используете «полный»? Похоже, вы столкнулись с проблемой между полной платформой .NET Framework и .NET Framework .NET. Что-то использует профиль клиента, но что-то еще нужно полностью. Если это так, установка полной Framework должна работать нормально. Вы определенно не хотите выбирать DLL между ними. – David

+0

. Имена DLL не имеют значения, у вас могут быть разные пространства имен в тех же DLL-файлах –

ответ

3

См. extern alias в MSDN и a tutorial, чтобы использовать их в визуальной студии.

из командной строки компилятора ссылки объявлены как:

/r:SystDataOfficial=System.Data.dll 
/r:SystDataOther=data.dll 

Затем в коде:

extern alias SystDataOfficial; 
extern alias SystDataOther; 

var c = new SystDataOfficial::System.Data.SqlClient(); 

Вы также можете поместить только один из библиотек DLL в качестве псевдонима и использовать другие один нормально

Обратите внимание, что типы не будут использоваться вместе. Этот код не будет работать:

// Expect SystDataOfficial::SomeConstant 
SystDataOfficial::System.Data.SqlClient.SomeMethod(SystDataOther::SomeConstant); 
0

Да, см

extern alias (C# Reference) на MSDN

Но они по-прежнему будут разные типы, и вы не будете иметь возможность передавать объекты, созданные по одному, чтобы методы в другом.