Kiedy próbuję uruchomić polecenie „update-database”, pojawia się następujący wyjątek:
Określ flagę „-Verbose”, aby wyświetlić instrukcje SQL stosowane do docelowej bazy danych. System.IO.FileNotFoundException: nie można załadować pliku lub zestawu „Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a” lub jednej z jego zależności. System nie może odnaleźć określonego pliku. Nazwa pliku: „Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a”
WRN: Rejestrowanie powiązań zestawu jest wyłączone. Aby włączyć rejestrowanie błędów powiązań zestawów, ustaw wartość rejestru [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) na 1. Uwaga: Istnieje pewien spadek wydajności związany z rejestrowaniem niepowodzenia powiązania zespołu. Aby wyłączyć tę funkcję, usuń wartość rejestru [HKLM \ Software \ Microsoft \ Fusion! EnableLog].
Nie można załadować pliku lub zestawu „Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a” lub jednej z jego zależności. System nie może znaleźć określonego pliku.`
źródło
Odpowiedzi:
Myślę, że miałem ten sam problem, co ty. Nie zapisałem całego komunikatu o błędzie, ale mój komunikat o błędzie to
Używam programu Visual Studio 2017 i próbowałem to zrobić
Update-Database
późniejAdd-Migration
.Aby rozwiązać ten problem, zamknąłem program Visual Studio i ponownie go otworzyłem , a następnie ponownie uruchomiłem
Update-Database
.To może, ale nie musi, rozwiązać twój problem, ale pomyślałem, że napiszę na wypadek, gdyby to pomogło.
źródło
Nasz lokalny skrypt kompilacji używał starszej wersji
nuget.exe
(4.7.1.5393
) do przywracania pakietów NuGet. Zaczęliśmy otrzymywać ten błąd po aktualizacji do wersji Visual Studio 201916.5.0
. Aktualizacja do najnowszej wersjinuget.exe
(5.4.0.6315
) rozwiązała problem.nuget.exe
można pobrać tutaj: https://www.nuget.org/downloads .źródło
NuGetToolInstaller@0
doNuGetToolInstaller@1
, nawet bez określania nowszej wersji. Nie jestem jednak pewien, czy to naprawia główną przyczynę problemu, czy też poprawka jest tylko efektem ubocznym wyczyszczenia lokalnej pamięci podręcznej.Główna przyczyna tego problemu pochodzi ze względnych ścieżek w
devenv.exe.config
pliku doMicrosoft.Build.Framework.dll
(patrz znaczniki xml).Niektóre rozszerzenia programu Visual Studio zmieniają bieżący katalog i powodują, że ścieżki względne są nieprawidłowe.
Aby to naprawić, otwórz ten plik w
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\
katalogu. i zamień wszystkie..\..\MSBuild\15.0\Bin\
naC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\
.źródło
Znalazłem obejście, które wydaje się rozwiązywać problem na dobre, przynajmniej w moim środowisku z VS 2017 Professional 15.5.2 i Entity Framework 6.1.1.
Zasadniczo zainstaluj bibliotekę DLL (wraz z kilkoma powiązanymi) w GAC (Global Assembly Cache), a problem zniknie.
Wykonaj następujące kroki:
Zamknij wszystkie uruchomione wystąpienia programu Visual Studio 2017
Uruchom wiersz polecenia dewelopera programu Visual Studio 2017
Wpisz następujące polecenia (zamień Professional na swoją edycję, Enterprise lub Community, albo odpowiednio dostosuj ścieżkę):
gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Framework.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Engine.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Conversion.Core.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll" gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll"
Zasadniczo GAC (w większości przypadków) będzie miał priorytet, gdy .NET spróbuje załadować bibliotekę DLL, a wyjątek FileNotFoundException zniknie, ponieważ biblioteka DLL zostanie teraz rozwiązana za pośrednictwem GAC.
Ponownie, działa to dla mnie i jest to po prostu obejście, nie rozwiąże samego podstawowego problemu, ale przynajmniej nie muszę cały czas ponownie uruchamiać VS, gdy próbuję pracować z migracjami EF, i to jest dla mnie wystarczająco dobre.
źródło
To zadziałało dla mnie - wydaje się, że problem nie dotyczy wsparcia, począwszy od 2020 r.
W kroku
Azure Build Pipeline
>NuGet tool installer
zmieńVersion of NuGet.exe to install
na nowszą wersję, na przykład5.4.0
. Sprawdź wersje na https://dist.nuget.org/tools.json .Problem zniknął i teraz pomyślnie się kompiluje.
źródło
Mój brakujący plik lub wersja zestawu jest inna w przypadku pytania.
Ten błąd występuje, gdy próbuję opublikować projekt ASP.net
Rozwiązałem problem, instalując Microsoft Build Tools 2015
Myślę, że mój problem spowodowany opublikowaniem projektu, który został zbudowany w VS 2015 w VS 2017. Mam nadzieję, że mogę pomóc innym, którzy mają ten sam problem.
źródło
Na wszelki wypadek ponowne uruchomienie programu Visual Studio nie działa Przejdź do Menedżera zadań / Eksploratora procesów i umiejętności VBCSCompiler.exe
Zaproponuj użycie Process Explorer
źródło
Zamykanie i ponowne otwieranie programu Visual Studio działa jak urok!
źródło
W moim przypadku coś (może NuGet-Update) dodało AssemblyBinding do pliku web.config:
<dependentAssembly> <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" /> </dependentAssembly>
Po usunięciu tej zależnej pozycji Assemby-Entry mogłem ponownie opublikować projekt.
źródło
To zadziałało dla mnie: błąd występuje, gdy wykonuję polecenie przywracania NuGet. Wersja Nuget 4.6.2. Mam dwa sposoby rozwiązania tego problemu.
Użyj Nuget 4.8.2 i nowszych. gacutil / i "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll
źródło
Mieliśmy ten problem i oto, co musieliśmy zrobić w naszym przypadku:
Problem polegał na tym, że mieliśmy
(IDbCommandInterceptor)
skonfigurowany przechwytywacz poleceń bazy danych, który wywoływałHttpRuntime.Cache["somekey"
] iz jakiegoś powodu polecenia migracji nie działały z tego powodu. Po usunięciu tej zależności wszystkie polecenia działały idealnie. MożeHttpRuntime
nie mogłeś znaleźć biblioteki DLL Build Framework?Sprawdź więc cały stos wywołań, gdy polecenia migracji nie sprawdzają, czy masz podobny problem.
źródło
Napotkałem ten sam problem, gdy zaktualizowałem komponenty XCode / Mono w systemie macOS.
Rozwiązaniem jest zaktualizowanie programu Visual Studio dla komputerów Mac do najnowszej wersji.
Myślę, że ten problem powoduje użycie nowych narzędzi MSBuild z pakietu .NET Core 3.0, który został zainstalowany z nową wersją XCode / Mono.
źródło
Podziękowania dla tych, którzy już opublikowali. Moja sytuacja została rozwiązana przez kombinację powyższych. Miałem kilka wersji Visual Studio: 2015, 2017, 2019. W pewnym momencie wersja MSBUILD zmieniła się z 15.1 na 15.9 i rozwiązałem ten problem, aktualizując
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.config
plik tak, aby wskazywał na bibliotekę 15.9. Oto przykład jednego z wpisów:<dependentAssembly> <assemblyIdentity name="Microsoft.Build.Utilities.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="2.0.0.0-99.0.0.0" newVersion="15.9.0.0"/> <codeBase version="15.9.0.0" href="..\..\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll" /> </dependentAssembly>
źródło
Korzystanie z programu Visual Studio 2019 Community Edition. Próbowałem innych rozwiązań bez powodzenia, ale po wyczyszczeniu pamięci podręcznej NuGet problem wydawał się być rozwiązany.
źródło
Po wypróbowaniu wszystkich powyższych metod i nie tylko - uruchomiona
WCF
aplikacja nadal mi się nie udała. Błąd:Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0
...U mnie zadziałało usunięcie
*.csproj.user
pliku projektów . Najwyraźniej miał w sobie jakąś przestarzałą konfigurację. Straciłem 4 godziny, próbując to rozgryźć.źródło
Zrestartowałem, po czym stwierdziłem, że lokalna usługa sieciowa, z której korzystałem, została zablokowana przez inny proces, który zajął ten port. Sprawdziłem działający proces i zabiłem go za pomocą TCPView i wszystko wydawało się znowu działać.
źródło