2013-06-16 25 views
9

Napisałem prostą aplikację VB.NET, która działa dobrze na maszynie programistycznej.Błąd aplikacji podczas uruchamiania - brak Microsoft.VisualBasic.PowerPacks

Jednak na innym komputerze, nawet jeśli zainstalowany jest system .NET Framework, ulega on awarii podczas uruchamiania z System.InvalidOperationException.

Wygląda na to, że występuje problem z odszukaniem zestawów Visual Basic.

Oto jeden z nie powiedzie się (wymieniłem poufnych informacji z trzema kropkami):

*** Assembly Binder Log Entry (16/06/2013 @ 15:45:12) *** 

The operation failed. 
Bind result: hr = 0x80070002. The system cannot find the file specified. 

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Running under executable C:\Users\.... 
--- A detailed error log follows. 

=== Pre-bind state information === 
LOG: User = ... 
LOG: DisplayName = Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a 
(Fully-specified) 
LOG: Appbase = file:///C:/Users/...... 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = MSystemAdmin.exe 
Calling assembly : MSystemAdmin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: This bind starts in default load context. 
LOG: No application configuration file found. 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 
LOG: GAC Lookup was unsuccessful. 
LOG: Attempting download of new URL file:///C:/.../Desktop/Microsoft.VisualBasic.PowerPacks.Vs.DLL. 
LOG: Attempting download of new URL file:///C:/.../Desktop/Microsoft.VisualBasic.PowerPacks.Vs/Microsoft.VisualBasic.PowerPacks.Vs.DLL. 
LOG: Attempting download of new URL file:///C:/.../Desktop/Microsoft.VisualBasic.PowerPacks.Vs.EXE. 
LOG: Attempting download of new URL file:///C:/.../Desktop/Microsoft.VisualBasic.PowerPacks.Vs/Microsoft.VisualBasic.PowerPacks.Vs.EXE. 
LOG: All probing URLs attempted and failed. 

Odpowiedz

16

Nie jest jasne, dlaczego brakuje PowerPacka, może to być problem z profilem klienta .NET 4. Było wiele wersji PowerPacka, a numeracja wersji stała się nieładna. Na moim komputerze ta sama wersja jest zgłaszana jako v2.0.50727, mimo że jest przechowywana w GAC jako wersja 10.0

Najlepiej jest wrócić do projektu. Kliknij ikonę "Pokaż wszystkie pliki" na pasku narzędzi w oknie Solution Explorer. To pokazuje teraz węzeł Referencje. Rozwiń go i wybierz referencje PowerPacks. W oknie Properties zmień właściwość Copy Local na True.

Przebuduj, a Twój katalog kompilacji będzie miał teraz kopię biblioteki DLL. Skopiuj go wraz z EXE na maszynę docelową.

1

Najwyraźniej wydaje się być problem z „Powerpacks”; są to dodatkowe kontrole do tych, które są domyślnie ustawione w Visual Studio (w części projektowej formularza, w "Toolbox"). Jeśli zainstalujesz required package na komputerze docelowym, wszystko powinno być w porządku.

Miałem ten problem w przeszłości i moje zalecenie nie polega na tych elementach: zawierają one ładne cechy (w moim przypadku miały kształt eliptyczny), ale można je zastąpić odrobiną pracy i prostsze obiekty. Jeśli chcesz sprzedać swój program mniej lub bardziej szerokiej publiczności, poleganie na tym problemie może stać się problemem: ten pakiet nie jest domyślnie instalowany na praktycznie żadnym komputerze, a zatem musiałbyś poprosić klientów, aby kontynuowali instalację. Lokalizacja tych konkretnych elementów sterujących jest prosta: na "Zestawie narzędzi" powinny być one wymienione w "PowerPacks" lub podobnych.


Po przeczytaniu komentarza Hans Passant za, ja pamiętam, że .dll plik musi znajdować się w tym samym katalogu niż wykonywalnego, ale jestem pod wrażeniem, że pakiet PowerPacks z dostarczonej odsyłacz ma być zainstalowanym w każdym razie (przynajmniej na komputerach, które nie mają Visual Studio).

+0

To działało tylko z DLL, ale wyobrażam sobie, że instalacja Power Packs wykonałaby pracę bez biblioteki dll. –

+0

Dziękuję za oddanie głosu, ale tak naprawdę to Hans Passant dał właściwą odpowiedź. W rzeczywistości miałem ten problem i powinienem spojrzeć na konkretny przypadek, aby zapamiętać plik .dll. W każdym razie nadal myślę, że posiadanie/niezainstalowanie Visual Studio jest istotne dla PowerPacks; podany link kompensuje ten brak (nie jestem pewien, czy plik .dll). – varocarbas

0

byłem modernizacji Visual Studio Visual   Studio   2013 do Visual   Studio   2015 na nowym systemie Windows   10 maszyny. W ten sposób skopiowałem folder Moje projekty z komputera z systemem Windows   7 do tej samej ścieżki na komputerze z systemem Windows  .

Kiedy otworzyłem projekt, w którym użyto MS.VB.PowerPacks.VS, zostałem poinformowany, że nie można znaleźć pliku. Pobrałem najnowszą instalację dla MS.VB.PowerPacks.VS w wersji 12.0.0.0.Wizualny   Studio   2015 wygaszone moich stron formularza, który korzystał z PrintForm i poinformował mnie:

System.IO.FileNotFoundException: Nie można załadować pliku lub zestawu „Microsoft.VisualBasic.PowerPacks.VS, wersja 10.0.0.0.

Zmieniłem odniesienie do vcersion 12.0.0.0, ale nadal nie zostało rozpoznane.

Moja poprawka: Skopiowałem folder C:\Program Files(x86)\Reference Assemblies\Microsoft\VBPowerPacks\v10.0 z mojego komputera z systemem Windows   7 do mojego komputera z systemem Windows 10, a następnie usunięto odniesienie do wersji 12.0.0.0 i dodano odwołanie do wersji 10.0.0.0 do programu. Następnie opuściłem projekt i otworzyłem go ponownie, a wszystko było dobrze, formularze były wyświetlane w ich pierwotnym pięknie.

Powiązane problemy