I have some general questions about web.config and how it works regarding assembly reference. I've been playing around with the new Razor view engine and had some trouble getting it up and running.
My problem started with a general
The type or namespace name 'XXXXX' does not exist in the namespace 'XXXXX' (are you missing an assembly reference?)
Now I figured this was just a simple Add Reference to the project and I'd be on my way. But even after I added a reference to the missing assembly, my project kept breaking.
I found the solution, and I had to add an assembly reference within the web.config. Once I did this everything worked fine.
First, I want to understand why it took adding a reference to web.config to fix this problem. Why wasn't a project reference just good enough?
Second, when it comes to adding references in web.config, I would like to understand the syntax. When I see markup like this
<add assembly="System.Web.WebPages" />
it seems very clear to me that I'm adding an assembly named System.Web.WebPages. But the full syntax in my web.config is
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Version seems self explanatory, but what is culture and PublicKeyToken used for? Are they required? What happens if I don't know either of them, can I just put anything in?
See Question&Answers more detail:os