colbybhearn
colbybhearn

Reputation: 482

How do I properly rename a .razor file in vs2019?

In vs2019, I added a new razor component to a working and essentially brand new Blazor App project. I renamed the file for my new razor component and noticed index.razor still referenced <oldComponentName/>, so I updated it to <newComponentName/> to match the new file name.

I see the error: Found markup element with unexpected name 'newComponentName'. If this is intended to be a component, add a @using directive for its namespace.

I built, rebuilt, and searched for a "map" of file names to component names that was out of date or something - no luck. There's no other namespace that I've (knowingly) introduced, so the @using guidance doesn't seem relevant.

At the moment, I happen to want my file names and component names to stay aligned. What am I missing here?

Upvotes: 13

Views: 5148

Answers (4)

mrDavid
mrDavid

Reputation: 77

Restarting VS often works. When it doesn't I've found opening the component and resaving (maybe with a superficial edit) can resolve

Upvotes: 2

Chris D
Chris D

Reputation: 9

This problem still exists!

I also got the message advising to use an @using directive. I had also tried closing the Solution, do Cleans, Builds and Rebuilds to no avail. Restarting didn't work for me, however, in fact having exited and re-entered VS neither component was being recognised.

I decided to add a new component from the Add template with the original component name and copy over the contents of the renamed file, at which point IntelliSense decided to recognise both versions, and things then ran as expected.

Upvotes: 0

Noel Widmer
Noel Widmer

Reputation: 4572

I had to restart my Visual Studio. No additional fixes were required. The problem seems to be some cached data.

Upvotes: 25

enet
enet

Reputation: 45674

Checklist:

  1. Your component name should starts with a capital letter, as Counter and not counter.

  2. The file name without extension is the name of your component

Thus, if you name the file name Counter.razor, your component name is Counter,

and it should be used like this :<Counter />

The error you received may also be attributed to failing to import the namespace where your component resides (in case you've defined it in a new folder you added to your app).

Upvotes: 1

Related Questions