Przygotowuję zupełnie nowe rozwiązanie ASP.NET MVC 5.1. Dodaję kilka pakietów NuGet i konfiguruję je w Zurb Foundation itp.
W ramach tego dodałem odwołanie do wewnętrznego pakietu NuGet, który jest Przenośną biblioteką klas i myślę, że powoduje to problem na serwerze kompilacji.
TeamCity kończy się niepowodzeniem z:
Typ „System.Object” jest zdefiniowany w zestawie, do którego nie ma odniesienia. Musisz dodać odwołanie do zestawu „System.Runtime, wersja = 4.0.0.0
Pierwotnie dodałem poprawkę dla tego samego lub podobnego błędu podczas kompilacji stron internetowych Razora, która to poprawka znajduje się w web.config
<compilation ... >
<assemblies>
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>
Jednak problem nie został rozwiązany.
źródło
.vs
, usunąłem (zmieniłem nazwę) folder po zamknięciu projektu, otworzyłem go ponownie, usunąłemweb.config
wpis, a teraz kompiluje się i działa poprawnie.Dodanie odwołania do tego zestawu System.Runtime.dll naprawiło problem:
Chociaż ten plik w tej jawnej ścieżce nie istnieje na serwerze kompilacji.
Odpowiem więcej informacji, gdy tylko znajdę dokumentację na temat PCL i tych fasad.
Aktualizacja
Tak, właściwie nic na temat zespołów fasad w całym Internecie.
Google:
źródło
Jedyny sposób, który dla mnie zadziałał. Dodaj zespół do pliku web.config
źródło
@ Komentarz PeterMajeeda w zaakceptowanej odpowiedzi pomógł mi z powiązanym problemem. Nie używam przenośnej biblioteki, ale mam ten sam błąd kompilacji w nowej instalacji systemu Windows Server 2012, na której uruchamiam TeamCity.
Zainstalowanie pakietu Microsoft .NET Framework 4.5.1 Developer Pack rozwiązało problem (po osobnym zainstalowaniu narzędzi do kompilacji MS ).
źródło
Miałem ten problem w niektórych rozwiązaniach VS 2015 (choć nie w MVC), a nawet w tym samym rozwiązaniu na jednej stacji roboczej, ale nie na innej. Błędy zaczęły się pojawiać po zmianie wersji .NET na 4.6 i odwoływaniu się do PCL.
Rozwiązanie jest proste: zamknij rozwiązanie i usuń ukryty folder .vs w tym samym folderze co rozwiązanie.
Dodanie brakujących referencji, jak sugerowano w innych odpowiedziach, również rozwiązuje problem, ale błąd pozostaje rozwiązany nawet po ponownym usunięciu referencji.
Co do TeamCity, nie mogę powiedzieć, ponieważ moja konfiguracja nigdy nie miała problemu. Pamiętaj jednak, aby zresetować działający katalog w ramach debugowania.
źródło
To stary problem, ale zmierzyłem się z nim dzisiaj, aby naprawić potok kompilacji na naszym serwerze ciągłej integracji. Dodawanie
mój
.csproj
plik rozwiązał problem dla mnie.Trochę kontekstu: zainteresowany projekt to pełny projekt .Net Framework 4.6.1, bez problemów z kompilacją na komputerach programistycznych. Problem pojawia się tylko na serwerze kompilacji, którego nie możemy kontrolować, może być spowodowany inną wersją zestawu SDK lub czymś podobnym.
Dodanie proponowanego
<Reference
rozwiązało błąd kompilacji, za cenę ostrzeżenia o braku odniesienia (żółty trójkąt na dodanym wpisie w drzewie odniesień) w Visual Studio.Mam nadzieję, że może to pomóc ludziom w podobnych scenariuszach ...
źródło
Zainstaluj środowisko uruchomieniowe .NET, a także pakiet docelowy dla wersji .NET, na którą celujesz.
Pakiet programisty to tylko te dwie rzeczy w pakiecie, ale na dzień dzisiejszy nie wydaje się mieć wersji 4.6, więc będziesz musiał zainstalować te dwa elementy osobno.
Pliki do pobrania można znaleźć tutaj: http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#
źródło
Napotkałem również ten problem, próbując uruchomić projekt ASP .NET MVC po drobnej aktualizacji naszej bazy kodu, mimo że skompilował się bez błędów:
Nasz projekt nigdy nie napotkał tego problemu, więc sceptycznie podchodziłem do zmiany plików konfiguracyjnych, zanim odkryłem główną przyczynę. Z dzienników błędów udało mi się zlokalizować szczegółowe dane wyjściowe kompilatora, które wskazywały na to, co się naprawdę działo:
Najwyraźniej nowy pakiet dodany do naszego projektu odwoływał się do starszej wersji .NET Framework, powodując problem „definicji w wielu złożeniach” (CS1685), co doprowadziło do błędu kompilatora widoku ostrzy w czasie wykonywania.
Usunąłem niezgodny pakiet (System.Collections.Immutable.dll) i problem przestał występować. Jeśli jednak pakiet nie może zostać usunięty z twojego projektu, musisz wypróbować odpowiedź Baahubali .
źródło
Na naszym serwerze kompilacji Tfs 2013 miałem ten sam błąd w projekcie testowym. z głównym projektem sieciowym uruchomionym w .Net 4.5.1.
Zainstalowałem pakiet nuGet System Runtime i dodałem odwołanie z paczek \ System.Runtime.4.3.0 \ ref \ net462 \ System.Runtime.dll
To dla mnie rozwiązało.
źródło
_._
Musiałem pobrać i zainstalować zestaw SDK systemu Windows 8.0 (a nie 8.1), aby błąd zniknął na moim serwerze TeamCity.
https://developer.microsoft.com/en-us/windows/downloads/windows-8-sdk
źródło
dodałem System.Runtime.dll do projektu bin i zadziałało :)
źródło
Miałem ten problem w rozwiązaniu z projektem Web API i kilkoma projektami bibliotecznymi. Jeden z projektów bibliotecznych opierał się na kompilacji, z błędami, które mówiły, że atrybuty Unity nie były „poprawnymi” atrybutami, a następnie jeden błąd powiedział, że muszę odwoływać się do System.Runtime.
Po wielu poszukiwaniach, ponownej instalacji pakietu programisty 4.5.2 i nic nie działającego, doszedłem do wniosku, że może to tylko niedopasowanie wersji. Spojrzałem więc na właściwości każdego projektu i jedna z podstawowych bibliotek była ukierunkowana na 4.5, podczas gdy każda inna była ukierunkowana na 4.5.2. Zmieniłem ten, aby obrał za cel także 4.5.2 i błędy zniknęły.
źródło
Kopiuję plik „C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5.1 \ Facades \ system.runtime.dll” do folderu bin serwera produkcyjnego, co rozwiązuje problem.
źródło
zainstaluj https://www.microsoft.com/en-us/download/details.aspx?id=49978 Microsoft .NET Framework 4.6.1 Developer Pack i dodaj ten wiersz kodu w pliku Web.config
źródło
Dla mnie pomógł tylko ten wiersz kodu:
Assembly.Load("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
źródło
Usunięcie odwołania w Menedżerze pakietów Nuget i ponowne dodanie go rozwiązało problem.
źródło