2009-06-29 14 views
26

Mam 1 DLL w środowisku .Net 3.5, a inny w wersji 2.0. Klasa ListBoxItem istnieje w wersji 2.0 i połączyłem klasę w bibliotece DLL 3.5 w tej samej przestrzeni nazw.Typ istnieje w obu bibliotekach DLL

Kiedy próbuję skompilować, pojawia się błąd "istnieje w obu". Jak mogę to skompilować i zachować tę samą strukturę.

Nie chcę odniesienia do DLL 2.0 do 3.5, aby wyeliminować ten problem, chcę zachować te DLLs oddzielne.

Odpowiedz

5

To nie wydaje się dobrym pomysłem bez względu na wszystko, ale zmień przestrzenie nazw iw pełni zakwalifikuj swoje zastosowania.

W przeciwnym razie, dlaczego nie wystarczy odwołać się do jednej biblioteki DLL?

+0

Jeśli zmienię przestrzeń nazw, to 2 biblioteki dll nie mogą być używane w tej samej metodzie, ponieważ mają 2 różne sygnatury. – pedrofernandes

+0

Nie chcę instancji 2.0 dll w 3.5 dll, ponieważ 2.0 dll mają duże odniesienia dodane i kiedy kompiluję go kompilować moje pliki DLL 3.5, 2.0 więcej wszystkich odwołań bibliotek dll w 2.0, dla co mogę mieć 15 bibliotek dll, kiedy mogę mieć tylko 2 biblioteki dll w moim folderze bin. – pedrofernandes

+0

Musisz przerobić angielski w ostatnich kilku postach. Nie mam pojęcia, co mówisz. Może po prostu zrobić to wszystko jeden dll? –

2

Podziel je na dwa różne rozwiązania: jeden dla .NET 2.0, a drugi dla .NET 3.5. W przeciwnym razie, w jaki sposób .NET wie, jak załadować który?

+0

OK, mam to. Ale kiedy tworzę projekt internetowy z tymi 2 bibliotekami dll, do których się odwołałem, nadchodzi eros. – pedrofernandes

+0

Rozwiązania! = Projekty. –

+0

Tak, to prawda. oszukał mnie. – pedrofernandes

6

Jest to istotne także rozwiązanie, w którym można określić, który typ do wykorzystania w usings:

https://stackoverflow.com/a/9194582/178620

nie można używać w pełni kwalifikowanych nazw gdy ma do czynienia z metodami rozbudowa i itp

+0

Możesz używać w pełni kwalifikowanych nazw, aby odwoływać się do metod rozszerzeń, ale tylko wtedy, gdy wywołasz je bezpośrednio, a nie jako i rozszerzenie. –

2

Stary wątek, który chciał dodać w innym wystąpieniu, w którym wystąpił ten problem. Był delaing z projektu, który został przekonwertowany ze strony internetowej do aplikacji sieci Web w Visual Studio 2010. Zacząłem się typu "klasa" istnieje zarówno w .../tymczasowe ASP.NET/... yada ... yada ... Yada.

W moim przypadku stara strona użyła datagridu do wyświetlenia listy dat, ale dataset był listą klas List<MyClass>, a kod w .aspx (bez kodu za) wykorzystywał metodologię rzutowania elementu danych do wyświetlenia ...

<%# ((MyClass)Container.DataItem).MyDate %> 

Z jakiegoś powodu MyClass wyzwalał błąd typu. Po wykonaniu pełnego wyszukiwania w całym projekcie dla wszelkich możliwych odniesień do podwójnej klasy i tym podobnych, nie znalazłem niczego, więc zdecydowałem zasadniczo, czy pozbyłem się obsady i po prostu podążam standardową metodą uzyskiwania wartości z DataItem w następujący sposób:

<%# DataBinder.Eval(Container.DataItem, "MyDate").ToString()%> 

I voila ... już nie istnieje typ błędu. Nie jestem pewien, dlaczego miałoby to spowodować powyższy błąd przejawiać się (a jeśli ktoś ma żadnego wglądu, byłoby to zrozumiałe), ale problem nie zniknął ...

nadzieję, że to pomoże komuś ...

Dave

Powiązane problemy