Context:
I have 3 projects in my solutions (C#, .NET 4.0):
Abc.Ui (Wpf project)
Abc.Business is my business logic. It contains Entities, Managers, Services, Etc.
Abc.Ui is unable to resolve all of the using Abc.Business;
The error log shows :
Error The type or namespace name 'Business' does not exist in the namespace 'Abc' (are you missing an assembly reference?) c:\Abc\Abc.Ui\ViewModels\ClientViewModel.cs
Also, when I manually type the using
in top of my file, The Intelli-sense show me the "Abc.Business.etc..". So the Intelli-sense walk in the reference but is does not build.
Any ideas ?
A big thanks to Grhm and Henk Holterman who point me out the Architecture solution. Actually, it was not the problem, but it makes me find it. The problem was the Framework target. The Ui project was, by default, targeting a .NET 4.0 Framework with a "Client" profile. This profile can't reference a non-client profile. I find that in the not-enough-used Debug Output Window. (I'm used to look in the Error list instead)
Here's what the error shown :
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3253: The referenced assembly "C:\Abc\Abc.Business\bin\Debug\Abc.Business.dll" could not be resolved because it has a dependency on "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which is not in the currently targeted framework ".NETFramework,Version=v4.0,Profile=Client". Please remove references to assemblies not in the targeted framework or consider retargeting your project.
I change the Profile to normal (nothing) and BOOM everything works.Here's the MSDN page about it
Thanks again for your time guys.
I've had issues like this when we had inconsistancies in the configuration manager. (Accessed via the Build menu).
We had some projects building an x86 variant, some building an x64 variant and the configuration manager had "Solution platforms" for "Any CPU" and "Mixed Processors".
I believe we had our "Business" built as a x86 library and our "UI" as an x64 (or vice versa), which meant it couldn't find the assembly (for the right architecture) and gave the error you're seeing, but the intelisense still worked as it was looking at the source.
I'd suggest a look at your project platforms and solution platforms and tidying up any oddities.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With