2010-05-11 9 views
13

Używam Visual Studio 2010 i używam wdrożenia WWW do promowania witryny .Net MVC do określonych środowisk. Zainstalowałem Elmah i działało świetnie na moim środowisku DEV, ale kiedy nacisnąłem TEST, otrzymałem wyjątki, ponieważ SQLite nie był dobrym formatem.Niepożądany SQLite wstawiony w bin

Nie używam SQLite w Elmah lub w inny sposób, który znam. Usunąłem wszystkie widoczne odwołania do SQLite i usunąłem plik .dll ze wszystkich katalogów bin konfiguracji. Ale nadal jest wstawiany przy każdej kompilacji. Zdaję sobie sprawę, że problem wyjątku polega na tym, że SQLite nie może być zbudowany dla CPU Any, a moje środowiska różnią się od x86 do x64. Ale wolałbym, żeby SQLite nawet nie było obecne.

Od tego czasu odinstalowałem Elmah, a SQLite jest nadal wstawiony do katalogu \ bin. Ponownie zainstalowałem Elmah i ręcznie usuwam SQLite.dll z \ bin po każdej kompilacji. Jak ustalić, co powoduje wstawianie SQLite do mojego \ bin po każdej kompilacji?

+0

nie jestem jasno na ten temat: Czy usunięty SQLite z ELMAH kodu źródłowego i ponownie skompilować? –

+0

Stefan, nie usunąłem żadnych odniesień ze źródła Elmah. Po prostu użyłem plików binarnych Elmah. Wygląda na to, że muszę dotknąć ich nieskazitelnego kodu. Wezmę źródło. – wilk

Odpowiedz

14

Jeśli nie używasz SQLite to trzeba po prostu usunąć go z źródłowego miejscu skąd importowane odniesienie. Aby to rozwinąć, załóżmy, że pobrałeś i rozpakowałeś ELMAH na ścieżce lokalnej C:\ELMAH. Po dodaniu odwołania do ELMAH prawdopodobnie wskazałeś jedną z wersji platformy pod numerem C:\ELMAH\bin, na przykład C:\ELMAH\bin\net-2.0\Release. Z podkatalogów C:\ELMAH\bin usuń wszystkie inne niepożądane złożenia i pliki oprócz Elmah.dll, Elmah.pdb i Elmah.xml. Ściśle mówiąc, nie potrzebujesz tych dwóch ostatnich, ale są one jednak zalecane. Gdy to zrobisz, możesz dodać odniesienie do Elmah.dll do swojego projektu w Visual Studio i żadna z zależności nie zostanie pobrana do katalogu Twojej aplikacji bin. Być może będziesz musiał usunąć swój katalog bin i ponownie zbudować swój projekt, aby pozbyć się nieaktualnej kopii System.Data.SQLite.dll z poprzedniego odniesienia. ELMAH będzie działał poprawnie bez numeru System.Data.SQLite.dll, o ile nie używasz Elmah.SQLiteErrorLog jako magazynu błędów.

Zgodnie z innymi sugestiami, nie powinieneś usuwać odwołań do SQLite ze źródeł ELMAH i tworzyć kompilacji prywatnych.

+1

Podczas gdy odpowiedź Stefana osiąga mój cel przy niewielkim wysiłku, rozwiązanie Atif rozwiązuje problem bez dotykania źródła. Tak naprawdę tego szukałem.Poza tym, kim jestem, aby dyskutować z Atifem, jeśli chodzi o Elmah. – wilk

+1

Chociaż to podejście działa, powoduje to ostrzeżenie MSBUILD VS2010 CA0060, jeśli włączona jest analiza kodu dla projektu odwołującego się do Elmah. Nie mogę znaleźć żadnego sposobu na zniesienie tego ostrzeżenia. Tak więc podrzucanie jest: niepotrzebne złożenia w zależności od mojego projektu lub żyją z ostrzeżeniami analizy kodu. Ja też nie lubię ... – BrettRobi

+2

Jakieś sugestie dla użytkowników NuGet? Jeśli złapię pakiet Elmah w NuGet, to wyrzuci dll SQLite do mojego katalogu bin na każdej kompilacji. – BZink

0

Użyj edytora tekstowego z obsługą "znajdź w plikach", aby wyszukać wszystkie pliki projektu dla "sqlite". Coś musi się do tego odwoływać.

+0

Sam, dzięki. Zrobiłem znalezisko w pliku, ale nie znaleziono odniesienia do SQLite. – wilk

2

Myślę, że Visual Studio wykryje, że SQLite jest wymagane przez Elmah i skopiuj go, jeśli go znajdzie. Aby osiągnąć ten sam cel, jak ty, usunąłem wszystkie elementy SQLite z kodu źródłowego Elmah i ponownie je skompilowałem. To jest zupełnie bezbolesny rzeczą do zrobienia ...

+1

Cha Ching! Wystarczy usunąć SQLiteErrorLog.cs z projektu, zbudować i przejść. Dzięki za pomoc. – wilk

0

Wiem, że to stare pytanie, ale mam podobny problem i wylądowałem tutaj, więc być może moja odpowiedź jest nadal pomocna dla innych.

Wystarczy dodać do pliku projektu aplikacji internetowej w preferowanym PropertyGroup-elementu:

<ExcludeFilesFromDeployment>bin\System.Data.SQLite.dll</ExcludeFilesFromDeployment> 
Powiązane problemy