Używam programu Visual Studio 2017 i próbuję utworzyć bibliotekę .Net Standard 1.5 i używać jej w projekcie testowym .Net 4.6.2 nUnit.
Otrzymuję następujący błąd ...
Nie można załadować pliku lub zestawu „System.Runtime, Version = 4.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a” lub jednej z jego zależności. System nie może odnaleźć określonego pliku.
Próbowałem następujących rzeczy:
- Odwołanie do biblioteki standardowej jako odniesienie do projektu. Błąd: daje mi poprzedni błąd.
- Utwórz pakiet NuGet dla mojej biblioteki Std i odwołaj się do tego. Błąd: typ to System.String, oczekuje się System.String. Dzieje się tak, ponieważ System.Runtime został przywołany przez projekt i ma definicje wszystkich standardowych typów.
- Odwołanie do pakietu NuGet NetStandard.Library. Błąd: podaj ten sam błąd co # („Typ to System.String, oczekuje się System.String”). UWAGA: Zanim to zrobiłem, wyczyściłem WSZYSTKIE pakiety NuGet z projektu, a następnie dodałem tylko pakiety nUnit i NetStandard.Library (które zainstalowały 45 innych pakietów).
Czy to błąd? Czy jest w pobliżu praca? Każda pomoc jest mile widziana.
[MSTest][Discovery] Failed to discover tests from assembly Reason:Could not load file or assembly 'System.Reflection, Version=4.1.1.0 etc
Ten problem występuje podczas odwoływania się do projektu .NET Standard z projektu .NET 4.x: żadne odwołania do pakietu NuGet projektu .NET Standard nie są wprowadzane jako zależności.
Aby to naprawić, upewnij się, że plik csproj .NET 4.x wskazuje aktualne narzędzia do kompilacji (co najmniej 14):
Poniższe nie powinno już być potrzebne, zostało naprawione około VS 15.3:
Wystąpił znany błąd w VS2017, szczególnie w NuGet 4.0.
Aby obejść ten błąd, musisz otworzyć plik .csproj dla projektu .NET 4.xi dodać ten fragment:
NuGet 4.x niesie ze sobą „odwołanie do pakietu” - koniec z packages.config - ale stary potok 4.x nie był w pełni zaktualizowany w momencie uruchomienia VS2017. Powyższy fragment wydaje się „budzić” system kompilacji, aby poprawnie uwzględnić odwołania do pakietów z zależności.
źródło
Ostatnio napotykam ten problem i próbowałem wielu rzeczy wymienionych w tym wątku i innych. Dodałem odwołanie do
"System.Runtime"
pakietu dla menedżera pakietów NuGetapp.config
, poprawiłem redykcję powiązania i upewniłem się, żeapp.config
ipackage.config
mają taką samą wersję do montażu. Jednak problem nie ustąpił.W końcu usunąłem
<dependentAssembly>
tag do montażu i problem zniknął. Spróbuj więc usunąć następujące elementy z plikuapp.config
.Edycja: Po zaktualizowaniu platformy .NET do wersji 4.7.2 problem powrócił. Wypróbowałem powyższą sztuczkę, ale nie zadziałała. Po zmarnowaniu wielu godzin zdałem sobie sprawę, że problem występuje z powodu starego
System.Linq
odniesienia w pliku app.config. Dlatego usuń lub zaktualizuj wszystkie odniesienia Linq, aby pozbyć się tego problemu.źródło
xunit System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.2.0
po uaktualnieniu moich projektów do wersji 4.7.2Zaufaj mi, nie żartuję. Usuń wszystkie zależności System.Runtime z pliku app.config i zacznie działać.
źródło
Rozwiązałem ten błąd, odwołując się do NetStandard.Library i następującego pliku app.config w NUnit-Project.
Edytować
Jeśli coś innego niż
System.Runtime
,System.Reflection
lubSystem.Runtime.InteropServices
brakuje (npSystem.Linq
), a następnie po prostu dodać nowydependentAssembly
węzeł.Edytuj 2
W nowych wersjach programu Visual Studio (myślę, że 2017 15.8) jest możliwe, że Studio tworzy plik app.config. Po prostu zaznacz pole wyboru Automatycznie generuj przekierowania powiązań we właściwościach projektu - aplikacja .
Edytuj 3
Automatyczne generowanie przekierowań powiązań nie działa dobrze z bibliotekami klas .NET. Dodanie poniższych wierszy do plików csproj rozwiązuje ten problem i zostanie wygenerowany działający plik .config dla biblioteki Classlibary.
źródło
<dependentAssembly>
węzły dla System.Runtime ..Naprawiłem to, usuwając plik
app.config
zwpisy.
app.config
został automatycznie dodany (ale nie potrzebny) podczas refaktoryzacjiźródło
Ten problem występuje podczas odwoływania się do projektu .NET Standard z projektu .NET 4.x: żadne odwołania do pakietu NuGet projektu .NET Standard nie są wprowadzane jako zależności.
Rozwiązałem przez dodanie
4.3
pakietu System.Runtime i NETStandard.Library i !! Używam narzędzia refaktoryzującego, aby sprawdzić wersję System.Runtime.dll,4.1.1.1
nie jest,4.3
a następnie dodaję bindingRedirect w .configźródło
Wiem, że jest już za późno, ale nie ma skutecznej odpowiedzi. Znalazłem odpowiedź z innej strony. Rozwiązałem problem, gdy usunąłem zależność zestawu System.Runtime. Usunąłem to.
<dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0"/> </dependentAssembly>
Z poważaniem
źródło
Miałem problem z tym w projekcie NUnit 2.6.4 przeznaczonym dla platformy dotnet 4.6.2. Napotkałem ten
System.Runtime FileNotFound
błąd, próbując użyć Humanizera .Naprawiłem mój błąd, instalując NetStandard.Library w moim projekcie testu jednostkowego.
źródło
Odkryliśmy, że
AutoGenerateBindingRedirects
może to powodować ten problem.Zaobserwowano: ten sam projekt był przeznaczony
net45
inetstandard1.5
został pomyślnie zbudowany na jednym komputerze, a nie został zbudowany na drugim. Maszyny miały zainstalowane różne wersje frameworka (4.6.1 - sukces i 4.7.1 - awaria). Po aktualizacji frameworka na pierwszym komputerze do 4.7.1 kompilacja również się nie powiodła.Auto binding redirects
jest cechą.net 4.5.1
. Za każdym razem, gdy nuget wykryje, że projekt przejściowo odwołuje się do różnych wersji tego samego zestawu, automatycznie wygeneruje plik konfiguracyjny w katalogu wyjściowym, przekierowując wszystkie wersje do najwyższej wymaganej wersji.W naszym przypadku było to ponowne wiązanie wszystkich wersji
System.Runtime
toVersion=4.1.0.0
..net 4.7.1
statki z4.3.0.0
wersją środowiska wykonawczego. Więc przekierowanie było mapowaniem do wersji, która nie była dostępna we współczesnej wersji frameworka.Problem został rozwiązany przez wyłączenie przekierowań automatycznego wiązania dla celu 4.5 i pozostawienie go tylko dla .net core.
źródło
Ten problem ma wiele przyczyn ... w moim przypadku problem polegał na tym, że w moim pliku web.config był tag dodający zestaw System.Runtime:
ale jeden pakiet dodał również ten sam zestaw jako zależność z inną wersją:
usunięcie tagu „add assembly” z mojego pliku web.config rozwiązało problem.
źródło
Wygląda na to, że problem jest spowodowany konfliktem wersji między packages.config i app.config. W app.config masz przekierowania wiązania zestawu automatycznie generowane przez coś o nazwie "AutoGenerateBindingRedirects". Po włączeniu za każdym razem, gdy pobierasz pakiet NuGet, dodatkowo, aby utworzyć nowy wpis w packages.config, dodać te informacje o przekierowaniu powiązania do app.config, jaki jest cel tego wyjaśniono tutaj: Przekierowanie powiązania zestawu : jak i dlaczego?
Tam możesz przeczytać, co napisał użytkownik @Evk:
Więc QUICK FIX: Usuń wszystkie wpisy w app.config.
W moim przypadku samo wykonanie tego programu zaczęło działać, ale prawdopodobnie zadziała tylko wtedy, gdy nie masz żadnych konfliktów wersji tego samego zestawu w czasie wykonywania.
Jeśli masz taki konflikt, powinieneś naprawić te numery wersji w app.config, aby pasowały do faktycznie używanych wersji zestawów, ale proces ręczny jest bolesny, więc sugeruję automatyczne wygenerowanie ich ponownie, otwierając Konsolę Menedżera pakietów i przeprowadź ponowną instalację pakietów, wpisując
Update-Package -reinstall
źródło
Znalazłem się w takiej sytuacji kilka razy z moją witryną internetową .NET 4.6.1. Tworzyłem ten problem za każdym razem, gdy dodawałem odwołanie do oddzielnego projektu .NET Core. Podczas kompilacji program Visual Studio prawidłowo ostrzegł mnie, że takie odwołania między platformami są nieprawidłowe, i szybko usunąłem odwołanie do projektu. Po tym projekt dobrze się zbudował, ale podczas uzyskiwania dostępu do strony internetowej pojawił się błąd System.Runtime i odmówił jej usunięcia.
Poprawka za każdym razem była kiepska, ale skuteczna: usunąłem katalog projektu i pobrałem go ponownie z kontroli źródła. Chociaż nie było różnicy między przed i po, mogłem zbudować projekt i uzyskać dostęp do strony bez żadnych skarg.
źródło
Wpadłem na to właśnie teraz w projekcie testów jednostkowych po dodaniu MsTest V2 za pośrednictwem Nuget. Zmiana nazwy app.config (tak efektywne usunięcie) załatwiła mi sprawę.
Po przeczytaniu wszystkich powyższych postów nadal nie jestem pewien dlaczego, przepraszam!
źródło
Rozwiązałem problem, usuwając pakiet Nuget,
System.Runtime
a następnie instalując go ponownieźródło
Do app.config lub web.config dodaj
źródło
Miałem projekt z tym samym problemem, rozwiązałem go ze zmianą wersji rdzenia dotnet z 2.2 na 2.0, jeśli twój problem pozostał, wypróbuj to rozwiązanie
źródło
Przed uruchomieniem testów jednostkowych wystarczy usunąć tagi środowiska wykonawczego z pliku app.config. Problem zostanie rozwiązany.
źródło
Podobny problem miałem w VS 2017 15.45 - stwierdziłem, że mimo że projekt został skompilowany i uruchomiony, pojawił się wyjątek system.IO.FileNotFoundException w odniesieniu do System.Runtime, gdy próbowałem uzyskać dostęp do obiektów TPL Dataflow.
Kiedy sprawdzałem projekty w rozwiązaniu, w jednym z nich (górnym) brakowało pakietu System.Runtime używanego przez podstawowe projekty. Po zainstalowaniu go z Nuget wszystko działało poprawnie.
źródło
Wypróbowałem tutaj wszystkie rozwiązania, ale bezskutecznie. Ostatecznie rozwiązałem to, otwierając nowy plik csproj i ręcznie dodając następującą sekcję:
źródło
Używam ASP.Net CORE 2.1 i otrzymałem ten błąd, gdy uruchomiłem, wybierając plik .csproj z listy około 40 w dużym repozytorium. Po indywidualnym otwarciu pliku csproj błąd został rozwiązany. Coś w sposobie uruchamiania programu było inne, gdy otwierano csproj.
źródło
Rozwiązuję ten problem, przełączając się z .NET 4.7.2 => .NET 4.5.2, a następnie przełączam się z powrotem na 472. W niektórych przypadkach ten błąd występuje, ponieważ menedżer pakietów nie może rozwiązać zależności
źródło
Jeśli wcześniej działało, powinna nastąpić zmiana App.config. Cofnij App.config działał dla mnie.
źródło
Przeszedłem również przez ten błąd i podzieliłem się tym, jak się do niego pozbyłem.
W moim przypadku poniższa linia istniała w web.config projektu webapi, ale nie było odniesienia do pakietu w pliku package.config.
Kod w Web.config w Webapi Project
Kod I Dodany w pliku packages.config w projekcie web api Przed zamknięciem elementu.
Inne rozwiązanie zadziałało w moim przypadku:
Kolejny pewny skrót, który może zadziałać w przypadku skopiowania projektu do innego systemu komputerowego, który może mieć niewiele różnych wersji pakietu, możesz spróbować zmienić wersję zestawu na wersję podaną błędnie na stronie internetowej / webapi podczas jej uruchamiania. Jak w tym przypadku jak podano w pytaniu Wymagana wersja to 4.1.0.0 więc po prostu spróbuj zmienić aktualną wersję w web.config na wersję pokazaną błędnie jak poniżej
Błąd:
źródło
Wystąpił ten błąd podczas tworzenia funkcji platformy Azure (z wyzwalaczem kolejki, jeśli to ma znaczenie)
Problem w tym przypadku był taki, że
AzureFunctionsVersion
ustawiono v2 zamiast v3. Aby zaktualizować go przez VS2019, zwolnij projekt, a następnie edytuj plik csproj. WPropertyGroup
węźle dodaj / edytuj następujące elementy:źródło