2011-01-13 19 views
5

Mam rozwiązanie Visual Studio 2010, które jest ustawione do kompilacji Debugowania x86. Dlatego Visual Studio ustawia ścieżkę wyjściową do \ bin \ x86 \ Debug, co wydaje się logiczne.Katalog wyjściowy podczas budowania projektu WCF w Visual Studio

Rozwiązanie zawiera około 50 projektów; projekt start-up jest projektem WCF.

Kiedy robię kompilację, oczekiwałbym, że wszystkie pliki wyjściowe dll pójdą do \ bin \ x86 \ Debug, ponieważ jest to ustawione w ustawieniach projektu. Ale dziwne, widzę biblioteki dll są tworzone w bin \ x86 \ Debug i w \ bin. Dlaczego Visual Studio umieściłby dll w \ bin, jeśli ścieżka wyjściowa nie jest ustawiona w tym katalogu? Wydaje się, że wszystkie biblioteki DLL idą do \ bin \ x86 \ Debug, a wszystkie biblioteki DLL z wyjątkiem projektu startowego idą do \ bin. Masz pomysł, dlaczego to zrobi? (Mamy inne rozwiązania, które nie używają WCF i nie mają tego problemu).

Inną irytacją jest to, że uruchomię usługę z Visual Studio, a następnie spróbuję uzyskać dostęp do mojej usługi w przeglądarce internetowej, przechodząc do http://localhost:1240/MyService.svc, to nie działa, ponieważ dll projektu start-up nie ma w/bin. Dlatego muszę ręcznie skopiować ten jeden plik dll z \ bin \ x86 \ Debug do \ bin, tak aby wszystkie biblioteki dll zostały odnalezione, a usługa działa normalnie. (Możemy oczywiście dodać niestandardowy krok post-build, który wykonuje kopię, ale można by pomyśleć, że będzie lepszy sposób!)

Czy dla tych, którzy pracują nad projektami WCF, opuszczacie ścieżkę wyjściową w \ bin \ x86 \ Debugowanie? (Być może istnieje sposób na skonfigurowanie usługi, np. W pliku web.config lub .svc, aby wiedział, że pliki binarne znajdują się w \ bin \ x86 \ Debug zamiast \ bin?) Czy zmieniasz ścieżkę wyjściową do \ bin, abyś mógł uruchomić swoją usługę prosto z Visual Studio?

Odpowiedz

7

Jeśli otworzysz stronę właściwości projektu WCF Hosting i kartę Goto Build, w sekcji Output tego znacznika znajduje się pole tekstowe zawierające lokalizację wyjściowych plików binarnych.

W przypadku projektu WCF pliki binarne powinny przejść do katalogu bin niezależnie od typu kompilacji (np. Debuguj, Zwolnij). Upewnij się, że ta wartość została poprawnie skonfigurowana.

Wartość należy skonfigurować dla każdego typu kompilacji \ konfiguracji.

+0

Tak, to pole tekstowe jest "ścieżką wyjściową", o której mówię w moim poście. Więc mówisz, że po prostu ustawiłeś to na bin, koniec historii. Wydaje się dziwne, że jeśli zmienisz tę ścieżkę wyjściową, większość plików nadal będzie trafiać do kosza, czyż nie? – Justin

+1

Dla domyślnej ścieżki wyjściowej projektu poza WCF wskazuje folder bin \\ [BuildConfiguration]. Ponieważ usługa WCF chce, aby biblioteka dll była obecna w katalogu bin, a nie w żadnym podkatalogu, domyślną konfiguracją projektu dla projektu WCF, jeśli utworzono z Visual Studio, jest folder bin. – Chandermani

+0

To trochę mnie robi pewne rzeczy MVC3, gdzie binarki trafiły do ​​bin \ x86 \ debug na podstawie ustawień Menedżera konfiguracji rozwiązania. Mam nadzieję, że to pomoże następnej osobie wymachującej dookoła ... Po prostu zmień wydruk strony na bin \ – Snowy

-1

Jeśli potrzebujesz, z różnych powodów, różnych wyjść z różnych konfiguracji kompilacji w różnych folderach, możesz je określić tak, jak robiłeś to wcześniej i użyć wiersza polecenia zdarzenia budowania postu, który kopiuje z określonego folderu wyjściowego do bin. Podoba mi się:

- untested code - 
    COPY/Y "$(OutDir)\*.*" "$(SolutionDir)$(ProjectName)\bin\" 
    - untested code - 
+1

Może powinieneś przetestować go przed wysłaniem? – ForceMagic

Powiązane problemy