In ASP.NET MVC 4.5.2 Framework, after typing #Html.LabelFor() or #Html.EditorFor() in a view, I'm getting this error:
The type 'Expression<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
I have added assembly reference System.Core.dll, Version 4.0.0.0, Runtime Version v4.0.30319, and also I did in web.config.
I am not sure if you are still having this issue or not but i was having the same issue as well.
I was able to find the solutions here
https://stackoverflow.com/questions/6496223/compilation-error-in-net-4-0-web-config-linq-not-found
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
I hope this helps..
This error means that Visual Studio is unable to locate the System.Web.Mvc assembly to power its intellisense for Razor views. One or both of the following may be required to fix it.
Ensure the version of the .NET framework for the compilation
property in the main web.config (the one in the website root) is the
same as that specified in the project properties.
[root]/Web.config:
<system.web>
<compilation targetFramework="4.6" />
Project Properties:
Ensure the version of the MVC assembly specified in the views
web.config (the one in the views folder) is the same as the MVC
assembly you are using in your project.
[views folder]/web.config:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
MVC Assembly Reference Properties:
I have run in the same issue as you, albeit much later. The issue was that I was not able to access Razor views (.cshtml) as I was getting an error stating that I had a missing assembly reference, namely System.Web.Mvc, even though it was in the project references. After investigation, I have noticed that the installed NuGet version was 5.2.3, while the project required 5.2.0. The solution is to downgrade the MVC version.
Go to Project-> NuGet Package Manager.
Search for MVC; it's going to be the first result.
Next is to select downgrade from the drop-down in the details of the
NuGet package and submit.
Confirm all the dialogs and you are ready to go.
Close the cshtml file
Rebuild solution
Open cshtml file
Still errors? Restart Visual studio
Still errors? Use ctm1988's answer
I have tried most of these, what eventually worked for me was unloading the project, edit the csproj file, and add the following:
<Reference Include="System.Core" />
https://stackoverflow.com/a/38371981/2335660
Deleting [projectName].csproj.user file from the project directory helped for me.
I just had the same exact issue and none of the solutions fixed the problem. I had to add this into my web.config within System.Web
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
I had removed it when changing some of the config around.
I've had the same problem with missing assembly and it happened that VS2017 build has not copied it properly into the Bin folder. These steps helped me:
Navigate to the web project's References node
Find the reference to System.Core
Open the VS Properties Window
In the properties window, change Copy Local: False to True
from this comment:
CS0012: The type '#####Any type#####' is defined in an assembly that is not referenced
In my case this message was shown only when Resharper was turned on. I have cleared Resharper cache, restarted VS, turned Resharper off and turned it on again. The message has dissapeared.
I did ALL of the above and in the end found that what solves it for me (on a .net framework 4.7.1 site with MVC 5.2.4) was adding this into the root web.config within <compilation> -
<assemblies>
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
In Web.config I needed to change:
<system.web>
<compilation debug="true" targetFramework="4.7">
to
<system.web>
<httpRuntime targetFramework="4.7" />
<compilation debug="true" targetFramework="4.7">
Check that the cshtml file Build Action is set to 'Content'.
I use ReSharper and have noticed that for some reason the file that is generated defaults to 'None' when invoking the template.
Add the following to Web.config (in root). I tried absolutely everything of earlier suggestions and nothing worked until I found the below. Hope it will save time for someone else.
I use targetFramework="4.6.1", but change it to the version you use if different.
<system.web>
<compilation debug="true" targetFramework="4.6.1" />
<httpRuntime targetFramework="4.6.1" />
</system.web>
Add the System.Core.dll file to the bin folder manually. Restart VS and build project.
Solved for me
Had design errors in all views on #Html helpers and on my Kendo grids.
Adding System.Core assembly in Web.config did nothing, nor did downgrading the MVC version. And error when trying to add reference to System.Core manually:
A reference to 'System.Core' could not be added. This component is
already automatically referenced by the build system.
Make sure to check that TargetFramework in project properties matches the one in project web.config.
Screenshot of bin folder
Well, I got it fixed by correcting the assembly reference in /Views/web.config, see the image:
delete bin, .vs and obj directory. after build your project on the visual studio.
Restarting Visual studio worked for me.
For me, there was an option under the project menu to "Enable C# 6.0/VB 14". Selecting this option did the trick. Previously I tried modifying the web.config, restarting Visual Studio, etc as was suggested in this post.
I faced the same problem. Basically the problem is using different version of System.Web.Mvc. So the best thing you should the open Tools > Nuget Package Manager > Manage Nuget Packages for Solution. You can probably see System.Web.Mvc on the Cosolidate tab. Upgrade or downgrade would be the best option. If you use the latest .Net framework, which is currently .Net 4.6.1, you should upgrade the all System.Web.Mvc versions to 5.2.4.0. Good luck!
This happened with one of my views - all the others were fine. I did the following:
Create a new view
Copy and paste the contents from the old view to the new one
Deleted the old one
Renamed the new one to the old one
Close the file
Clean the solution
Build the solution
Reopen the file
Try to add
using system.Linq.Expressions;
I had this problem too.
Changing targetFramework="4.5.2" to targetFramwork="4.5"
in web.config file solved it.
If you get this in only one or two CSHTML files... it's a corrupt file.
I've had this happen with a corrupt file that has some hidden unicode characters.
Try copying all the text of the document to a fresh notepad instance.
Clear the contents of the original file and save... if the file length is > 0, there's something awry.
Delete the file and save your notepad instance over the old version.
All the errors went away for me.
I've had this happen a couple of times in my solution. Not sure what's causing it, but I suspect it's Resharper screwing up when it starts to swallow huge chunks of memory into the abyss.
Am I the only one who has a love / hate relationship with Resharper?
This can be caused if you have multiple projects in your solution that don't all target the same version of the .NET Framework. For example, if your web app project targets .NET 4.5 and you have an assembly reference to another project in the solution that targets .NET 4.5.2. To fix this you need to change your projects to all target the same version of the .NET Framework.
If none of the answers work use this one. I faced the same issue! Actually configuration.cs file in migrations folder was missing/deleted. I did delete migrations folder and also did delete migrations table from database. Next in Package Manager Console (PM) used following commands:
Enable-Migrations -Force
Add-Migration Initial
update-database
This process recreated the configuration.cs file and everything worked perfectly!
Check your project properties to get the Target framework. I resolved this issue in my project by matching for my target framework .NET framework 4.6.1 MVC 5.2.3 was the apt solution. I got that MVC version from NuGet.
In my case the solution was to move the ConnectionString inside the Web.Config. This statement should be after AppSettings section.
Installing the System.Core package with NuGet package manager works for me
In my case I checked the targetFramework of Microsoft.AspNet.Mvc in the packages.config file.
<package id="Microsoft.AspNet.Mvc" version="4.0.20710.0" targetFramework="net462" />
And I found that the targeting package was not installed.
After installing that targeting package, my issue was resolved.
I've created an ASP.NET MVC 4 app using visual studio 2012 RC on Windows 8 release preview. I downloaded and installed the WIF toolkit and used the "Identity and Access" option in the solution menu to add my Access Control Service metadata endpoint. Tested locally and all is well. When I deployed to my free azure website however I get the yellow screen saying
"Could not load file or assembly 'System.IdentityModel.Services,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or
one of its dependencies. The system cannot find the file specified."
These assemblies aren't referenced in the project, so I added them, sent to output to the bin folder and redeployed. I then got a message about the assembly probably being tampered with. Does anyone know how to overcome this?
EDIT
Adding local causes this error
Could not load file or assembly 'System.IdentityModel.Services' or one
of its dependencies. Strong name signature could not be verified. The
assembly may have been tampered with, or it was delay signed but not
fully signed with the correct private key. (Exception from HRESULT:
0x80131045)
In the web config the module is deinfed as
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
</modules>
</system.webServer>
Thanks
System.identityModel.Services is a .NET Framework 4.5 namespace with no .NET Framework 4.0 version. .NET Framework 4.5 is not supported on Windows Azure Web Sites.
I think this is a known issue in Azure, you'll need to use a start-up script that runs gacutil.exe to register the IdentityModel.dll.
Follow the steps here: http://blogs.infosupport.com/adding-assemblies-to-the-gac-in-windows-azure/
Edit:
My bad, I thought you were talking about a Web Role. As astaykov said, you can't have start-up tasks in Web Sites. Well maybe this'll help somebody else out :-)
So, you need to explicitly add the Idendity assemblies as references to your web app project, then explicitly set theyr "Copy Local" attribute to "True", then follow this MSDN forums thread and use this session token handler. Read through that blog post.
Following all the steps you will have WIF enabled ACS consuming app, like the one I just created here: http://wawsacs.azurewebsites.net/ (note, this websites will be delete by me on July 25th 2012).
My machine has ASP.NET MVC3 and ASP.NET MVC4 beta1 installed.
I just donwloaded the latest source of ASP.NET MVC4 from http://aspnetwebstack.codeplex.com/SourceControl/list/changesets
How can I create a project in VS2010 that uses the assemblies created from this sourcecode?
You may take a look at the following blog post. It's about an older version of ASP.NET MVC but the same applies for the MVC 4.0 Beta.
So here are the steps:
Create a new ASP.NET MVC 4 project in VS
Remove the reference of the System.Web.Mvc assembly (or whatever assembly you will be trying to debug)
Add a reference to the assembly you have compiled
In your web.config make sure that you remove the corresponding <add assembly="System.Web.Mvc, ..."> (the one with the strong name) or it will use the assembly from the GAC instead of your custom built one.
I downloaded the source at http://aspnetwebstack.codeplex.com/ and used the instructions there and there http://aspnetwebstack.codeplex.com/documentation to get a compiling solution with working unittests.
I then created a new MVC4-Beta1 project in the solution. I removed references to
System.Web.Mvc.dll
System.Web.WebPages.dll
and added references to the corresponding projects in the solution.
I then changed web.configs in the main folder and view folder.
<add key="webpages:Version" value="2.0.0.0" />
was changed to
<add key="webpages:Version" value="3.0.0.0" />
I can now compile the project and debug into the MVC-source.
I have ASP.Net MVC 2 and 3 installed. I've downloaded the complete source from github for the Rob Connery MVC Storefront here. I've opened it in VS2010, which ran the conversion wizard. When I launch it though, I get the error in the title, on the following line <li>About</li> which is line 24 in Site.Master. So I'm thinking, ah, this thing is still referencing v1 of MVC, instead of v2. So the first thing I checked is the section of the web.config, thinking that must be where the reference to version 1 of MVC is residing, however, I found the following <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />. Even in the Project References, the reference properties for System.Web.Mvc show that it is referencing v2.0 from the folder C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies. Does anyone have advice on where I can find the reference to the v1.0.0.0 of System.Web.Mvc so that I can change this to v2 in order to make the above error go away.
The most probable cause for this exception is that you are referencing some assembly in your project that implicitly depends on System.Web.Mvc 1.0. For example you might be using some DI framework which is compiled against MVC 1. So if you have ensured that in your web.config you have the correct version and that it is the correct version being referenced you might go through all other assemblies that are referenced in your project and see if they don't depend on MVC 1.0.
This is weird,
I have a solution with two projects in it...
Genesis.Domain - Is a Class Library and has the repository in it.
Genesis_0_02 - Has the actual MVC Controllers, views, etc... and it's the startup project
I am in the process of modifying the repository and the mvc project. I was able to add a couple of views, but then the automatic view generation (right click + "Add View") stopped working.
An error dialogue box popped up with an error and a stack trace. I can't copy-paste it but basically it said:
C:\pathto\CodeTemplates\AddView\Empty.tt(-1,-1): error : An exception was thrown
while running the transformation code. The process cannot continue. The following
exception was thrown:
System.IO.FileNotFoundException: Could not load file or assembly 'Genesis.Domain,
Version=1.0.0.0, Culture Neutral, etc.etc.' or one of its dependencies. The system
cannot find the file specified.
File name: 'Genesis.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
Followed by a stacktrace that I'm unable to copy paste.
What could cause this? Genesis.Domain is referenced and has been referenced through all of development. The project/solution compiles fine and it runs fine.
I am able to make views using models/classes from Genesis_0_02 namespace. But not from Genesis.Domain namespace. (Even though Genesis.Domain classes do show in the list.)
Also, unusual classes have popped up in the "Add View" class list. they look like this:
Genesis_0_02.Controllers.AdminMemberController+<>c__DisplayClass8+<>c__DisplayClasse>
I have no idea where those are coming from.
What could be causing this? How do i get the "Add View" feature working again?
Edit
BTW: I can manually create new views and they do work.
I had this same problem. A colleague at work solved the issue by debugging the template process. He found that VS2010 was ALWAYS looking for the dll's in a local folder, in our case it was:
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\"
Once we created the folder in this location, we placed the Dll and it's dependencies in this folder and the error went away.
It think this is a definite bug in VS2010.
We had to add folder in the above path that matched the name of the referenced Dll.
This behaviour is very weird. I have seen weirdnes for VS2008.
Try Couple of things as below
1] Create a New MVC web project and add reference to - Genesis.Domain. and See if Add View from controller works on it.
If yes then verify below configuration in web.config file (which is Under Views folder) in your working project - specifically
PageParserFiltertype
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
If No
Then try to reinstall Framework and VS2010 MVC 2 / 3 on dev machine.
also you could use below link
http://bradwilson.typepad.com/blog/2010/03/diagnosing-aspnet-mvc-problems.html
Good Luck!
It sounds like the reference to your class library project was somehow messed up. Have you tried removing the class library project from your solution and then re-adding the project to the solution?
I've never run into this problem myself, but it's the only thing that comes to mind from those error messages.