Getting "type or namespace name could not be found" but everything seems ok?

Viewed 448849

I'm getting a:

type or namespace name could not be found

error for a C# WPF app in VS2010. This area of code was compiling fine, but suddenly I'm getting this error. I've tried removing the Project Reference and the using statement, shutting VS2010 and restarting, but still I have this issue.

Any ideas why this might be occurring, where it seems like I'm doing the right thing re Reference & using statement?

I also noted in VS2010 that intellisense for that namespace is working ok, so it seems like VS2010 has the project reference and is seeing the namespace on one hand, but during compile doesn't see it?

44 Answers

Check the Build Action of the .cs file containing the missing type. Make sure it's C# compiler.

  1. Click on the .cs file containing the missing type.
  2. Press F4 to bring up Properties.
  3. Make sure Build Action is set to C# compiler.

Before:

The properties of a C# file whose build action is set to "None"

After:

The properties of a C# file whose build action is set to "C# compiler"

We had a weird case of this that I just fixed in a solution. There was a hidden/whitespace character in front of a "using" statement in the main project. That project would build fine and the website worked fine, but the unit test project that referenced it could not be built.

In my case I had a Class that was listed in the proper source folder, but was not registering in Solution Explorer. I had to do right click the project > Add Existing item and manually select that Class it said it was missing. Then everything worked fine!

I know its old, but I've found the same issue. My project did build, I then updated Visual Studio to the latest & the project wouldnt build as it couldnt find a type definition from a separate assembly. The other assembly built OK, the main project referenced it correctly & nothing had changed since it built OK.

I cleaned the whole solution & rebuilt it, it failed. I built the assembly on its own, it built OK. The project didnt build. I cleaned & built multiple times, and it failed. I then called a colleague to look at it, when I built with him watching, it all built OK.

I think Visual Studio tooling is the problem, especially as I just updated it.

My case was same as discussed here but nothing solved it until I've removed the System.Core reference from the references list (Everything worked fine without it)

hope it will help someone because this issue is quite frustrating

Ok, years later using VS 2017 .NET Core 2.2 Razor Pages I feel this answer might help someone. If it was a snake it would have bit me. I was throwing stuff around, changing names, renaming Models, and all of a sudden I got this error:

Error CS0246 The type or namespace name 'UploadFileModel' could not be found (are you missing a using directive or an assembly reference?)

This was underlined in red in my .chstml Razor Page. (not underlined after fix):

@page
@model UploadFileModel

So, finally, and luckily, I found the code from someone else that I had originally used, and low and behold, the namespace did not include the .cshtml file name!!!

Here is my bad dummy error spank myself with the page name in the namespace:

namespace OESAC.Pages.UploadFile
{
    public class UploadFileModel : PageModel
    {

What my original code had and all I had to do was delete the page name from the namespace, UploadFile:

namespace OESAC.Pages
{
    public class UploadFileModel : PageModel
    {

And low and behold, all the errors disappeared!! Silly me. But you know, MS has made this .NET C# MVC stuff really confusing for us non-computer scientists. I am constantly tripping on my shoelaces trying to figure out model names, page names, and syntax to use them. It shouldn't be this hard. Oh well. I hope error and solution helps someone. The error was right, there is no Namespace named "UploadFileModel" haha.

Had the same problem after merging some new code into a vs2019 project. Restarted VS, unloaded and reloaded projects, ensured all projects in solution had same ToolsVersion= and TargetFrameworkVersion. None of this helped.

I had a case of project Substrate, failing to find namespace Skin (in project Skin).

Finally I opened up Substrate.csproj and checked all the ProjectReference Include entries. The others were there, but no reference to Skin, even though Skin did show up in the check box of the little project dependencies dialog. So the project dependencies dialog took the check box for Skin (and saved it somewhere) but did not alter Substrate.csproj. I then added the ProjectReference Include manually, ensuring I had the correct path and GUID for the skin project.

<ProjectReference Include="..\Skin\Skin.csproj">
  <Project>{1ad4b5d7-5014-4f5f-983e-2c59ac0e0028}</Project>
  <Name>Skin</Name>
</ProjectReference>

I then saved the Substrate.csproj and the problem was solved. So as others have said this is a problem with VS tooling

In my case, I unload the project, then:

  1. Opened myProject.csproj and update the ToolsVersion="4.0" to ToolsVersion="12.0"(I'm using vs 2017)(using Paulus's answer https://stackoverflow.com/a/64552201/1594487).

  2. Deleted following lines from the myProject.csproj:

    <Import Project="..\packages\EntityFramework.6.4.0\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" />
    <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
    

And the problem solved.

I know this thread is old but anyway I'm sharing, I have to install all third part dependencies of the imported assembly - as the imported assembly wasn't included as Nuget package thus its dependencies were missing.

Hop this help :)

I was working on VS 2017 community edition and had the same issue with CefSharp nuget packages.

Packages were downloaded and restored successfully, project could be built and run successfully - only the markup indicated that the namespaces were not recognized.

All I had to do was to open the References section and click on one of the yellow exclamation signs.

enter image description here

After a few seconds the markup errors went away.

enter image description here

Started having this problem after "downgrading" from VS 2019 Enterprise to VS 2019 Professional. Although the error was showing in the Error window, I could build the project without problems. Tried many solutions from this thread and others like equalizing target frameworks, delete and make the reference again, deleting .suo file, etc. What worked for me was simply deleting the project in my local repository and cloning it again from the remote repository.

Struggled with this for a while, and not for the first time. In times past it usually was a configuration mismatch, but this time it wasn't.

This time it has turned out to be that Auto-Generate Binding Redirects was set to true in my application.

Indeed, if I set it to true in my library, then my library gets this error for types in the Microsoft.Reporting namespace, and if I set it to true in my application, then my application gets this error for types from my library.

Additionally, it seems that the value defaults to false for my library, but true for my application. So if I don't specify either one, my library builds fine but my application gets the error for my library. So, I have to specifically set it to false in my application or else I will get this error with no indication as to why.

I also find that I will get this message regardless of the setting if a project is not using sdk csproj. Once I convert to sdk csproj, then the setting makes a difference.

Also, in my case, this all seems to specifically have to do with the Microsoft.ReportingServices.ReportViewerControl.Winforms nuget package, which is in my root library.

I got this error for "using System;" after adding a new library project to my VS2019 Solution. Adding the Package Newtonsoft.Json(currentversion) to the library project fixed the problem, because the dependencies for Newtonsoft.Json included the NETStandard.Library under Dependencies for the library and was producing a warning icon. The main project had an error until I installed Newtonsoft.Json so I presumed that it would work for the Library too; and it did.

I opened the references underneath the project in the project explorer, hovered my mouse over one of the missing references, and presto, it found everything. I was then able to build successfully.

Running Visual Studio Community 2019, Version 16.8.4

Make sure that you are referring to the namespace given for the project/file. My issue was that I coppied a file from another project and forgot to change the namespace.

I faced this issue while trying to build my project in cloud. It was building fine on my local device, but not on Gitlab CI/CD pipeline.

First thing to do is to check if you are uploading/pushing all the needed files. In my case, my .gitignore file was configured in a wrong way, and it was ignoring important *.meta files.

Fixing .gitignore and pushing again made the project in cloud equivalent with my local version and problem is solved.

In my case, I had two project in a solution, I added a sub-namespace into the referenced project, but when building, I didn't notice that the referenced project build failed and it used the last successfully built version which didn't have this new namespace, so the error was correct, that it cannot be found, because it didn't exist The solution was obviously to fix errors in referenced project.

Check your file extensions:

working in vscode and been getting the same error, but everything worked! color coding, intelisense, quick actions, folder icons.... but for some reason it just wouldn't build.

ended up browsing the local file system and noticed the file extension was missing on the class file that the build kept complaining about.

I found a very simple solution in my case when facing the mentioned error: in the console, I just ran

dotnet build 

for the project, afterwards all error messages in Visual Studio were gone.

Remove the assembly from GAC(C:\WINDOWS\assembly folder - select your assebly and right click and uninstall). because solution keeps refference using guid and if that guid is in GAC, it will keep taking GAC version for compilation.

Related