Reputation: 171
I have two projects A and B. Project A makes use of type X in project B, so I have a reference to B added in A. Everything built fine.
I signed project B using a strong named key file. Everything still built fine.
Then I decided to change the strong named key file for B. I rebuilt project B ok. When I try to build project A I receive the error "Error 1 The type X is defined in an assembly that is not referenced. You must add a reference to assembly B, Version=1.0.0.0, Culture=neutral, PublicKeyToken=95b41b0d6571627b'. "
So I deleted the reference in project A and added it back in again, no joy. I can dbl click on the project B reference in project A, open the object browser and see type X in there ok. I also fully qualified the type X objects in A and the intellisense picked them up fine but it still does not build.
I thought that changing the key file I might need to up the revision, so I changed assembly B version to 2.0.0.0 but still A complains that it needs version 1.0.0.0. Looking at the properties of the B reference in A it definitely points to the correct version and indeed it shows as 2.0.0.0
I could live with using the existing key file but i'd like to understand where I am going wrong if possible.
Upvotes: 14
Views: 52643
Reputation: 11
This also happened to me.
In my case, the problem was that from a solution A I was referencing projects from a solution B (I changed the name of a project from B). When I tried to compile A, it tried to find the old name of the project in B.
I added again the new reference of this project, recompile and so on but unhopefully it did not work.
The problem was fixed when I added again all the reference of B in A. I was loading old DLLs that were compiled with the old project of B. These DLLs had some kind of cross interaction with the old reference.
I hope this work for someone else.
Upvotes: 1
Reputation: 6949
To help people getting here from Google, Merlyn's comment asking about delay-signed was the answer for me.
I was getting this error referencing a delay-signed assembly A that referenced a type X defined in assembly B. I got the error that B wasn't referenced (and I was already referencing the signed version of B).
The fix was to find and reference the signed version of A.
Upvotes: 0
Reputation: 2262
What worked for me was to remove the reference to the project, then add it back in again. A new error message appeared stating that I needed a reference to a third library that was missing, so the original message was a bit misleading!
Upvotes: 1
Reputation: 585
Sorry for late answer, but this helped me:
(Assuming that you have AnyCPU solution platform currently)
Upvotes: 3
Reputation: 22158
Based on what you said in the comments, I would say it's most definitely something up with Project A.
Perhaps these steps will help fix it:
Once you remove all references to the project, reload the project as bottlenecked suggested and see if that fixes it for you.
Upvotes: 4
Reputation: 2157
You could try editing the project A's project file (projectA.csproj). To do this through visual studio right click on the project->unload project and then on the unloaded project right click->edit file. Search for the reference to project B in there, and try to correct as necessary
Upvotes: 0