Buildfout: u moet een verwijzing naar System.Runtime toevoegen

Ik ben een gloednieuwe ASP.NET MVC 5.1-oplossing aan het voorbereiden. Ik voeg een aantal NuGet-pakketten toe en installeer het met Zurb Foundation, enz.

Als onderdeel daarvan heb ik een verwijzing toegevoegd naar een intern NuGet-pakket dat een Portable Class Library is en ik denk dat dit een probleem veroorzaakt op de build-server.

TeamCity mislukt de build met:

Het type ‘System.Object’ is gedefinieerd in een assembly waarnaar niet wordt verwezen. U moet een verwijzing naar de assembly ‘System.Runtime, Version=4.0.0.0

. toevoegen

Ik heb oorspronkelijk de correctie voor dezelfde of soortgelijke fout toegevoegd bij het compileren van de Razor-webpagina’s, die correctie in de web.config

<compilation ... >
  <assemblies>
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>

Het probleem is echter niet opgelost.


Antwoord 1, autoriteit 100%

Om de oplossing te implementeren, moet u eerst de bestaande web.config-compilatiesectie uitvouwen die er standaard als volgt uitziet:

<compilation debug="true" targetFramework="4.5"/>

Eenmaal uitgevouwen heb ik de volgende nieuwe configuratie-XML toegevoegd zoals mij was opgedragen:

 <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>

De uiteindelijke web.config-tags zouden er als volgt uit moeten zien:

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>

Antwoord 2, autoriteit 52%

Het toevoegen van een verwijzing naar deze System.Runtime.dll-assembly loste het probleem op:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Runtime.dll

Hoewel dat bestand in dat expliciete pad niet bestaat op de buildserver.

Ik zal meer informatie posten zodra ik wat documentatie over PCL en deze gevels heb gevonden.

Bijwerken

Ja, vrijwel niets over gevelmontages op het hele internet.

Google:

(Facades OR Facade) Portable Library site:microsoft.com

Antwoord 3, autoriteit 16%

De enige manier die voor mij werkte – voeg de assembly toe aan web.config

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>

Antwoord 4, autoriteit 11%

De opmerking van @PeterMajeed in het geaccepteerde antwoord heeft me geholpen met een gerelateerd probleem. Ik gebruik de draagbare bibliotheek niet, maar heb dezelfde buildfout bij een nieuwe installatie van Windows Server 2012, waar ik TeamCity gebruik.

Het installeren van het Microsoft .NET Framework 4.5.1 Developer Packkostte het probleem oplossen (na afzonderlijk de MS Build Tools).


Antwoord 5, autoriteit 5%

Ik had dit probleem in sommige oplossingen op VS 2015 (niet in MVC), en zelfs in dezelfde oplossing op het ene werkstation maar niet op het andere. De fouten begonnen na het wijzigen van de .NET-versie naar 4.6 en het verwijzen naar PCL.

De oplossing is eenvoudig: Sluit de oplossing en verwijder de verborgen .vs-mapin dezelfde map als de oplossing.

Het toevoegen van de ontbrekende referenties zoals gesuggereerd in andere antwoorden lost ook het probleem op, maar de fout blijft opgelost, zelfs nadat u de referenties opnieuw hebt verwijderd.

Wat betreft teamcity, kan ik niet zeggen dat mijn configuratie nooit een probleem had. Maar zorg ervoor dat u de werkcatalogus opnieuw instelt als onderdeel van uw foutopsporingsinspanning.


6

Op onze TFS 2013 Build Server had ik dezelfde fout, in een testproject.
Met het hoofdwebject op .NET 4.5.1.

Ik heb een Nuget-pakket van systeemruntime geïnstalleerd en de referentie toegevoegd
Pakketten \ System.runtime.4.3.0 \ Ref \ NET462 \ System.runtime.dll

die het voor mij oplost.


7

Ik moest de Windows 8.0 (en niet 8.1) SDK downloaden en installeren om de fout te laten verdwijnen op mijn teamCity-server.

https://developer.microsoft.com/en -us/windows/downloads/windows-8-sdk


Antwoord 8

ik heb System.Runtime.dlltoegevoegd aan het bin-project en het werkte 🙂


Antwoord 9

Ik had dit probleem bij een oplossing met een Web API-project en verschillende bibliotheekprojecten. Een van de bibliotheekprojecten haperde bij het bouwen, met fouten die zeiden dat de Unity-attributen geen “geldige” attributen waren, en toen zei een fout dat ik naar System.Runtime moest verwijzen.

Na veel zoeken, het opnieuw installeren van het 4.5.2 Developer Pack en niets werkte, dacht ik dat het misschien gewoon een verkeerde versie was. Dus ik keek naar de eigenschappen van elk project, en een van de basisbibliotheken was gericht op 4.5, terwijl elke andere op 4.5.2 was gericht. Ik heb die gewijzigd om ook 4.5.2 te targeten en de fouten zijn verdwenen.


Antwoord 10

Ik kopieer het bestand “C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.1\Facades\system.runtime.dll” naar de bin-map van de productieserver, dit lost het probleem op.


Antwoord 11

installeer https://www.microsoft.com/ nl-us/download/details.aspx?id=49978Microsoft .NET Framework 4.6.1 Developer Pack en voeg deze regel code toe aan het Web.config-bestand

<compilation debug="true" targetFramework="4.5">
          <assemblies>
            <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
          </assemblies>
        </compilation>

Antwoord 12

Voor mij hielp alleen deze coderegel:

Assembly.Load("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");


Antwoord 13

Het verwijderen van de referentie over de Nuget Package Manager en opnieuw toevoegen loste het probleem voor mij op.

Other episodes