Ich bereite eine brandneue ASP.NET MVC 5.1-Lösung vor. Ich füge eine Reihe von NuGet-Paketen hinzu und richte sie mit der Zurb Foundation usw. ein.
Als Teil davon habe ich einen Verweis auf ein internes NuGet-Paket hinzugefügt, das eine Portable Class Library ist, und ich denke, dies verursacht ein Problem auf dem Build-Server.
TeamCity schlägt den Build fehl mit:
Der Typ 'System.Object' wird in einer Assembly definiert, auf die nicht verwiesen wird. Sie müssen einen Verweis auf Assembly 'System.Runtime, Version = 4.0.0.0 hinzufügen
Ich habe ursprünglich den Fix für den gleichen oder einen ähnlichen Fehler beim Kompilieren der Razor-Webseiten hinzugefügt. Dieser Fix befindet sich in der web.config
<compilation ... >
<assemblies>
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>
Das Problem ist jedoch ungelöst.
quelle
.vs
Ordner nach dem Schließen des Projekts gelöscht (umbenannt) , erneut geöffnet, derweb.config
Eintrag entfernt und jetzt wird er ordnungsgemäß erstellt und ausgeführt.Durch Hinzufügen eines Verweises auf diese System.Runtime.dll-Assembly wurde das Problem behoben:
Obwohl diese Datei in diesem expliziten Pfad nicht auf dem Build-Server vorhanden ist.
Ich werde mit weiteren Informationen zurückschicken, sobald ich eine Dokumentation zu PCL und diesen Fassaden gefunden habe.
Aktualisieren
Ja, so ziemlich nichts über Fassadenbaugruppen im gesamten Internet.
Google:
quelle
Der einzige Weg, der für mich funktioniert hat. Fügen Sie die Assembly zu web.config hinzu
quelle
@ PeterMajeeds Kommentar in der akzeptierten Antwort half mir bei einem verwandten Problem. Ich verwende die tragbare Bibliothek nicht, habe jedoch den gleichen Erstellungsfehler bei einer Neuinstallation von Windows Server 2012, bei der ich TeamCity ausführe.
Die Installation von Microsoft .NET Framework 4.5.1 Developer Pack hat das Problem behoben (nachdem die MS Build Tools separat installiert wurden ).
quelle
Ich hatte dieses Problem in einigen Lösungen auf VS 2015 (allerdings nicht in MVC) und sogar in derselben Lösung auf einer Workstation, aber nicht auf einer anderen. Die gestarteten Fehler traten auf, nachdem die .NET-Version auf 4.6 geändert und auf PCL verwiesen wurde.
Die Lösung ist einfach: Schließen Sie die Lösung und löschen Sie den versteckten .vs-Ordner im selben Ordner wie die Lösung.
Das Hinzufügen der fehlenden Referenzen, wie in anderen Antworten vorgeschlagen, löst das Problem ebenfalls, aber der Fehler bleibt auch nach dem erneuten Entfernen der Referenzen behoben.
Was TeamCity betrifft, kann ich nicht sagen, da meine Konfiguration nie ein Problem hatte. Stellen Sie jedoch sicher, dass Sie den Arbeitskatalog als Teil Ihrer Debugging-Bemühungen zurücksetzen.
quelle
Es ist ein altes Problem, aber ich habe es heute konfrontiert, um eine Build-Pipeline auf unserem Continuous Integration Server zu reparieren. Hinzufügen
zu meiner
.csproj
Datei löste das Problem für mich.Ein bisschen Kontext: Das interessierte Projekt ist ein vollständiges .NET Framework 4.6.1-Projekt ohne Build-Probleme auf den Entwicklungsmaschinen. Das Problem tritt nur auf dem Build-Server auf, den wir nicht kontrollieren können. Dies kann an einer anderen SDK-Version oder ähnlichem liegen.
Durch Hinzufügen des Vorschlags wurde
<Reference
der Erstellungsfehler zum Preis einer fehlenden Referenzwarnung (gelbes Dreieck am hinzugefügten Eintrag im Referenzbaum) in Visual Studio behoben .Ich hoffe, dies kann Menschen in ähnlichen Szenarien helfen ...
quelle
Installieren Sie die .NET Runtime sowie das Targeting Pack für die .NET-Version, auf die Sie abzielen.
Das Entwicklerpaket besteht nur aus diesen beiden Dingen, die derzeit gebündelt sind. Derzeit scheint es jedoch keine Version 4.6 zu geben, sodass Sie die beiden Elemente separat installieren müssen.
Downloads finden Sie hier: http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#
quelle
Ich hatte auch dieses Problem beim Versuch, ein ASP .NET MVC-Projekt nach einem geringfügigen Update unserer Codebasis auszuführen, obwohl es fehlerfrei kompiliert wurde:
Unser Projekt war noch nie auf dieses Problem gestoßen, daher war ich skeptisch, Konfigurationsdateien zu ändern, bevor ich die Grundursache herausfand. In den Fehlerprotokollen konnte ich diese detaillierte Compilerausgabe finden, die darauf hinwies, was wirklich geschah:
Anscheinend hat ein neues Paket, das unserem Projekt hinzugefügt wurde, auf eine ältere Version von .NET Framework verwiesen, was das Problem "Definition in mehreren Assemblys" (CS1685) verursachte, das zur Laufzeit zum Compilerfehler der Rasiermesseransicht führte.
Ich habe das inkompatible Paket (System.Collections.Immutable.dll) entfernt und das Problem trat nicht mehr auf. Wenn das Paket in Ihrem Projekt jedoch nicht entfernt werden kann, müssen Sie die Antwort von Baahubali versuchen .
quelle
Auf unserem Tfs 2013 Build Server hatte ich den gleichen Fehler in einem Testprojekt. mit dem Hauptwebprojekt, das auf .Net 4.5.1 ausgeführt wird.
Ich habe ein nuGet-Paket von System Runtime installiert und den Verweis aus packages \ System.Runtime.4.3.0 \ ref \ net462 \ System.Runtime.dll hinzugefügt
Das hat es für mich gelöst.
quelle
_._
Ich musste das Windows 8.0 (und nicht 8.1) SDK herunterladen und installieren, damit der Fehler auf meinem TeamCity-Server verschwindet.
https://developer.microsoft.com/en-us/windows/downloads/windows-8-sdk
quelle
Ich habe System.Runtime.dll zu bin project hinzugefügt und es hat funktioniert :)
quelle
Ich hatte dieses Problem in einer Lösung mit einem Web-API-Projekt und mehreren Bibliotheksprojekten. Eines der Bibliotheksprojekte war auf Build ausgelegt, mit Fehlern, die besagten, dass die Unity-Attribute keine "gültigen" Attribute waren, und einem Fehler, der besagte, dass ich auf System.Runtime verweisen musste.
Nachdem ich viel gesucht, das 4.5.2 Developer Pack neu installiert und nichts funktioniert hatte, stellte ich fest, dass es sich möglicherweise nur um eine Versionsinkongruenz handelte. Also habe ich mir die Eigenschaften jedes Projekts angesehen, und eine der Basisbibliotheken zielte auf 4.5 ab, während jede andere auf 4.5.2 abzielte. Ich habe dieses geändert, um auch 4.5.2 zu erreichen, und die Fehler sind verschwunden.
quelle
Ich kopiere die Datei "C: \ Programme (x86) \ Referenzassemblies \ Microsoft \ Framework.NETFramework \ v4.5.1 \ Facades \ system.runtime.dll" in den Ordner bin des Produktionsservers. Dadurch wird das Problem behoben.
quelle
Installieren Sie https://www.microsoft.com/en-us/download/details.aspx?id=49978 Microsoft .NET Framework 4.6.1 Developer Pack und fügen Sie diese Codezeile in die Datei Web.config ein
quelle
Das Entfernen des Verweises über den Nuget Package Manager und das erneute Hinzufügen löste das Problem für mich.
quelle