2012-02-26 22 views
25

"MVC 4" projem var ve web.config dosyasına bir derleme eklemek istiyorum ama nereye koymalıyım bilmiyorum. Herhangi bir yol deniyorum ama çözümü bulamıyorum.mvc 4 web sitesinin web.config dosyasında nasıl eklenir

ben bu hata var her zaman:

You must add a reference to assembly 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

bu benim web.config dosyasıdır:

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=152368 
    --> 
<configuration> 
    <connectionStrings> 
    <add name="ParsGraphicEntities" connectionString="metadata=res://*/Entities.ParsGraphic.csdl|res://*/Entities.ParsGraphic.ssdl|res://*/Entities.ParsGraphic.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=ParsGraphic;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-UI.MVC.InternetApplication-2;Integrated Security=True" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <appSettings> 
    <add key="webpages:Version" value="2.0.0.0" /> 
    <add key="webpages:Enabled" value="true" /> 
    <add key="PreserveLoginUrl" value="true" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 
    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
    <profile defaultProvider="DefaultProfileProvider"> 
     <providers> 
     <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> 
     </providers> 
    </profile> 
    <membership defaultProvider="DefaultMembershipProvider"> 
     <providers> 
     <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
     </providers> 
    </membership> 
    <roleManager defaultProvider="DefaultRoleProvider"> 
     <providers> 
     <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> 
     </providers> 
    </roleManager> 
    <sessionState mode="InProc" customProvider="DefaultSessionProvider"> 
     <providers> 
     <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> 
     </providers> 
    </sessionState> 
    </system.web> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    </system.webServer> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

bana yardım edin.

Teşekkürler.

+3

Neden web.config dosyasında bir referans eklemeliyim? Tasarım zamanında derleniyor mu? Eğer değilse, Referans Ekle diyalogunu kullanarak bir referans eklemenizi tavsiye ederim. Veya daha iyisi, nuget kullanın ve varlık çerçevesini kurun – rfcdejong

+1

http://stackoverflow.com/questions/5021248/could-not-load-file-or-assembly-system-data-entity – RickAndMSFT

+0

@rfcdejong adresine bir göz attınız mı? System.Data.Entity ile referans iletişim ekle ancak bu derlemeyi web.config –

cevap

40

Bu oldukça basit. web.config içinde derleme bölümüne bakın:

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

Şimdi bölümü açmak ve bu gibi içeri derleme koymak: Bu bölümdeki

<compilation debug="true" targetFramework="4.0"> 
    <assemblies> 
    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </assemblies> 
</compilation> 

Kütüphaneler derleme zamanında kontrol edilir, bu ilgisi çalışma zamanı bağlama ile ilgili.

+2

Netleştirmek için: projenizde birden fazla Web.config olabilir. Yukarıdaki montaj bilgisini, Görünümler klasörünüzde değil, proje düzeyinde bulunan yapılandırmaya ekleyin. İlk kendiliğinden kapanabilen derleme etiketindeki "/" kapanış etiketini kaldırmayı unutma –

+1

Sorunumu çözdüyse de, neden hala bunu yapmak zorunda olduğumu anlamıyorum. Projemde System.Data.Entity'ye bir başvuru yaptım, ancak derlemeyi bulamadığı için çalışma zamanı hataları alıyordum. Bunu derlemeler bölümünde web.config dosyasına eklediğimde sorun ortadan kalktı. Neden ikisine de sahip olduğumu açıklayan birine ihtiyacım var. – Ray

+0

Referansa eklediğiniz projeye referans (proje dosyası ve bin klasörü) ekler. Ancak proje dosyanızı dağıtmıyorsunuz. Bu, web uygulamanızı bin klasöründeki dll'inizde yayınlayabileceğiniz, ancak web uygulamanızın, tüm isteğinizi sunucu isteğinde ilk istekte sunucu tarafında topladığını bilmediğiniz anlamına gelir. Bölümün derleme zamanında kontrol edildiğini söylediğim gibi (sunucunuz kodu yeniden derleyebilir). Bu nedenle, bu bilgileri web yapılandırmanıza eklemeniz gerekir, çünkü bu web.config sunucunuzda dağıtılan dosyadır. –

4

Sadece Web'de VS Express 2012'de MVC 4 ile aynı sorunu yaşadım, ancak Alfons'un cevabı Web'de bulduğum her şeyden çok daha yararlı olsa da, maalesef projemdeki hatayı gidermedim. İnternette biraz araştırma yaptıktan sonra (boşuna) ve sonra sadece Visual Studio'yu gezdirerek, aşağıdaki çözümü buldum.

benim projenin referanslarına EntityFramework ekleme ve benim Web.config etiketi eklemenin yanı sıra, ben de derleyici tatmin için aşağıdaki adımları almak zorunda:

  1. Kaynaklar klasörünü sağ tıklayın> Ekle Referans ...
  2. Pencerenin sol tarafındaki Montajları genişletin ve Çerçeve'yi seçin.
  3. Montajlar listesinde System.Data.Entity öğesine gidin ve seçin.
  4. System.Data.Entity'nin yanındaki kutunun işaretlendiğinden emin olun ve sonra 'Tamam'ı tıklayın.
  5. Projeyi yeniden oluşturun.
+0

Güzel iş. Bu, eksik olduğum özel sosdu. – Ellesedil

İlgili konular