System.Web.MVC Missing

We hebben een oude ASP.NET MVC 3-webtoepassing, gebouw in VS2010, die niet compileert, sinds de beveiligingsupdate van vorige week.

Het probleem is dat de verwijzing naar system.web.mvc.dll is verbroken.

Wanneer ik het oplossingsbestand opneet op onze buildmachine, waar de beveiligingsupdate niet is uitgevoerd en open het dialoogvenster Eigenschappen voor referenties- & GT; System.Web.MVC, het ziet er prima uit.

Pad is C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.MVC.dll
Versie is 3.0.0.0

Maar wanneer ik het oplossingsbestand opent op een Dev-machine waar de beveiligingsupdate is uitgevoerd, is referenties- & GT; System.Web.MVC is gemarkeerd als vermist. Als ik het verwijder, en probeer het terug te voegen met het vs2010’s Add Reference-dialoogvenster, wordt het niet weergegeven.

zwervend rond het web heeft me geleid tot suggesties waarbij MVC wordt bijgewerkt met behulp van Nuget. We hebben geen nuget gebruikt, in onze VS2010-projecten, dus dat lijkt niet helemaal gelijk, voor deze situatie. Ik heb het toch geprobeerd en eindigde met half-een-dozijn ontbrekende referenties.

Wanneer ik kijk naar de eigenschappen voor “C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assembly \ System.Web.mvc.dll” in Windows Explorer, op de build machine Ik zie versie 3.0 .0.0.

Als ik kijk naar de eigenschappen op de Dev-machine, zie ik versie 3.0.50813.1.

Wat ik nodig heb is een manier om de manier waarop ik bouw en loop zodat ik kan bouwen en rennen, ongeacht welke van deze twee DLL’s in het kader van de .NET 3.0.

Ideeën?

Wat ik heb geprobeerd die niet werkte

Eerste poging – Als de montage ontbreekt, voegt u deze toe. Ik heb de oude ontbrekende referentie verwijderd. Toen kopieerde ik de DLL van de map “ASP.NET MVC3 \ Assembly’s”, in een map in mijn project. Stel het in als “Altijd kopiëren” en voegde het als een referentie toe.

Daarmee zou het project in VS2010 compileren, maar wanneer ik de pagina’s met aspnet_compiler probeert te precompileren, kreeg ik waarschuwingen:

(0): warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy

Tot nu toe heb ik erin geslaagd om te voorkomen dat runtime-beleid, maar ik probeerde dit toe te voegen, in het web.config:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.1" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

Probeerde het opnieuw en kreeg dezelfde waarschuwingen.

Mijn vraag is – heb ik nog steeds een probleem? Of zal mijn oplossen, ondanks de waarschuwingen?


Antwoord 1, Autoriteit 100%

Ontvang de nieuwste versie van MVC3 via Nuget. Open uw project in Dev Studio. Open het tabblad Pakketbeheerder op de bodem van Dev Studio. Gebruik vervolgens deze opdracht:

PM> Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

Als u op de TAB-toets klikt na “-Versie” krijgt u een lijst met alle beschikbare versies.

Als je een oude versie van NuGet hebt, krijg je mogelijk een foutmelding die aangeeft dat je deze moet upgraden. Zo ja, open dan Tools->Extension Manager om de nieuwste versie van NuGet te installeren. Let op, u moet Dev Studio als beheerder uitvoeren voordat u NuGet kunt installeren.

Als u MVC3 installeert, moet Web.config in uw project worden bijgewerkt.

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-3.0.0.1" newVersion="3.0.0.1" />
  </dependentAssembly>
</assemblyBinding>

Antwoord 2, autoriteit 20%

MVC 5

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Stack 5\Packages\ Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll

MVC 4

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Mvc.dll

MVC 3

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll

MVC 2

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies\System.Web.Mvc.dll

Waar kan ik System.Web.MVC dll vinden in een systeem waarop MVC 3 is geïnstalleerd?


Antwoord 3, autoriteit 16%

De eenvoudigste manier om dit probleem op te lossen, is door ASP.NET MVC 3 te installeren vanuit het installatieprogramma van Web Platforms.

http://www.microsoft.com/web/downloads/

of met behulp van Nuget-opdracht

Install-Package Microsoft.AspNet.Mvc -Version 3.0.50813.1

Antwoord 4, Autoriteit 2%

In vs 2017 maakte ik de oplossing schoon en herbouwde het en dat heeft het vastgesteld


Antwoord 5

Ik heb dezelfde situatie: Visual Studio 2010, geen nuget geïnstalleerd en een ASP.NET-applicatie met System.Web.MVC versie 3.

Wat voor mij werkte, was om elk C # -project in te stellen dat System.Web.MVC gebruikt, om naar referenties in de Solution Explorer te gaan en eigenschappen in te stellen op System.Web.MVC, met Copy Local to True en specifieke versie Naar FALSE – de laatste zorgde voor het veld Versie om de huidige versie op die machine te tonen.


Antwoord 6

Voor het geval iemand een positie is waar hij dezelfde fout is. In mijn geval downgrading Microsoft.aspnet.mvc en vervolgens opnieuw upgraden van het opnieuw. Ik had dit probleem na het installeren van Glimpse en het verwijderen ervan. System.Web.MVC was op de een of andere manier verwezenlijkingen, het reinigen van de oplossing of het opnieuw opbouwen. Het heeft in mijn geval niet gewerkt. Geef het gewoon proberen of geen van de bovenstaande antwoorden voor u werkt.


Antwoord 7

Had dit probleem in VS2017, ik kreeg al MVC via Nuget maar System.Web.MVC verscheen niet in de lijst “Assemblies” onder “Referentie toevoegen”.

De oplossing was om “Extensions” te selecteren onder “Assemblies” in het dialoogvenster “Referentie”.


Antwoord 8

In mijn geval had ik al de juiste referenties in mijn project. Ik vond dat door de oplossing de Nuget-pakketten automatisch werd hersteld.


Antwoord 9

Het voorbeeld MVCMUSICStore.codeplex.com geopend in VS2015 Gemiste referenties, een van hen System.Web.MVC.

De oplossing hiervoor was om het uit de referenties te verwijderen en een referentie toe te voegen:
kies Extensiesonder Assemblies, daar kun je System.Web.Mvc vinden en toevoegen.

(De andere samenstellingen die ik heb toegevoegd met de nugetpakketten.)


Antwoord 10

Voeg de referentie opnieuw toe vanuit ./packages/Microsoft.AspNet.Mvc.[version]/lib/net45/System.Web.Mvc.dll

Other episodes