asp.net - What does the web.config compilation/assemblies element do? -
i had problem where, working on new mvc project, added html.partial("name") _layout.cshtml page, asp.net throw exception on page load:
error cs0012: type 'system.object' not in referenced assembly defined. add reference assembly "system.runtime, version = 4.0.0.0, culture = neutral, publickeytoken = b03f5f7f11d50a3a" added.
the fix add web.config, compilation element:
<assemblies> <add assembly="system.runtime, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> </assemblies> i'd love know why fixes issue.
what's odd new mvc app i'm using has load of webforms aspx pages work treat. i've copied ton of legacy webforms stuff new mvc project, acres of code, , works, , without html.partial call, mvc view renders.
so on earth going on? config , why aren't normal project references , target framework settings enough?
this caused disconnect , limitation between build time , runtime environments of asp.net/mvc project. code in web project compiled @ build time (ie f5) exception views (both razor , inline aspx code) built dynamically @ runtime (ie within iis).
for part, attempt make these 2 environments exactly same , not typically notice difference. unfortunately. you've run 1 of cases there is difference , you've needed manually add reference make runtime mimic build-time.
what's happening, have dependency on portable library (at guess, microsoft.net.http). portable libraries little different normal libraries, , need references make compiler happy. @ build-time detect dependency on portable library , automatically add references c:\program files (x86)\reference assemblies\microsoft\framework\.netframework\v4.5\facades. unfortunately, runtime doesn't , need manually add these references until fix in future release.
for future reference, can grab following section , paste directly web.config (this represents snapshot 4.5):
<compilation> <assemblies> <add assembly="system.collections, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.collections.concurrent, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.componentmodel, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.componentmodel.annotations, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.componentmodel.eventbasedasync, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.diagnostics.contracts, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.diagnostics.debug, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.diagnostics.tools, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.diagnostics.tracing, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.dynamic.runtime, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.globalization, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.io, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.linq, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.linq.expressions, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.linq.parallel, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.linq.queryable, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.net.networkinformation, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.net.primitives, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.net.requests, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.objectmodel, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.reflection, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.reflection.emit, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.reflection.emit.ilgeneration, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.reflection.emit.lightweight, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.reflection.extensions, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.reflection.primitives, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.resources.resourcemanager, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.runtime, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.runtime.extensions, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.runtime.interopservices, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.runtime.interopservices.windowsruntime, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.runtime.numerics, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.runtime.serialization.json, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.runtime.serialization.primitives, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.runtime.serialization.xml, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.security.principal, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.servicemodel.duplex, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.servicemodel.http, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.servicemodel.nettcp, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.servicemodel.primitives, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.servicemodel.security, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.text.encoding, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.text.encoding.extensions, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.text.regularexpressions, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.threading, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.threading.tasks, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.threading.tasks.parallel, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.xml.readerwriter, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.xml.xdocument, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> <add assembly="system.xml.xmlserializer, version=4.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a" /> </assemblies> </compilation>
Comments
Post a Comment