2010-09-03 8 views
17

Próbuję rozszerzyć pewną aplikację. Używam biblioteki DLL dołączonej do tej aplikacji, aby rozszerzyć jej funkcjonalność. Korzystam z edycji ekspresowej visual studio 2010. Dodałem odwołanie do biblioteki DLL. We właściwościach refrence opcja "Copy local" jest wyłączona. (Wyszarzona) Dlaczego tak jest? Chcę, żeby studio graficzne skopiowało bibliotekę dll do mojego folderu wydania. Jeśli nie można tego zrobić, to czy istnieje sposób na połączenie dll?Visual Studio kopia dll refrences do folderu wyjściowego

Odpowiedz

25

Twój komentarz Hans odpowiedź wskazuje, że jest to zespół COM i że używasz Visual Studio 2010.

Oznacza to, że prawdopodobnie odniesienie montaż został dodany z „Typy HTML Interop” Ustawianie wartość true. Powoduje to połączenie zestawu COM do pliku binarnego, co eliminuje potrzebę jego wdrożenia. Poniższy link zawiera bardziej szczegółowe wyjaśnienie

Jeśli chcemy wdrożyć go jednak wtedy trzeba zrobić następujące

  • Kliknij na odniesienie w zakładce referencje
  • Hit F4, aby wywołać siatkę właściwości
  • Ustaw "Embed Interop Types" na False (spowoduje to odwinięcie C opiuj lokalne)
  • Set „Kopia lokalna” do prawdziwego
2

To zależy od rodzaju biblioteki DLL. Jeśli jest to serwer COM, funkcja Kopiuj lokalnie jest wyłączona, gdy zarejestrowany jest identyfikator PIA dla tego serwera COM. Jeśli jest to zwykły zestaw .NET, to będzie wyłączony, gdy zostanie zarejestrowany w GAC.

Napraw problem, odpowiednio, za pomocą regasm/u, aby wyrejestrować PIA lub gacutil/u, aby usunąć go z GAC. Zauważ, że możesz tego nie chcieć, jeśli ta biblioteka DLL wymaga, aby jej instalator został wykonany na komputerze docelowym. Które jest prawdopodobne. Porozmawiaj ze sprzedawcą lub autorem części, aby dowiedzieć się, co powinieneś zrobić.

+0

To zespół COM (widzę go na liście w zakładce COM w visual studio dodać Referencje Referencje dodać okno). jak znaleźć ścieżkę zespołu, którą muszę dostarczyć do regresji. Ścieżka wyświetlana obok niego w visual studio to project \ obj \ x86 \ Release \ Interop.lbname.dll. Zapewnienie, że ścieżka jest wykonywana pomyślnie, ale nadal mam ten sam problem. – user434541

+0

Trudno to zrozumieć. project \ obj \ x86 \ release nie jest prawidłową ścieżką dla zespołu współdziałania. Nie powinno to również pojawiać się w oknie dialogowym Dodaj odniesienie. I nie używasz regasm.exe na macierzystym serwerze COM, tylko na tym, który został zaimplementowany w .NET. W takim przypadku powinieneś używać go tak, jak jest, a nie jako serwera COM. Porozmawiaj ze swoim sprzedawcą. –

Powiązane problemy