VS2010项目之间的程序集引用失败

时间:2011-01-26 16:10:04

标签: c# visual-studio-2010 assemblies projects-and-solutions

上下文:

我的解决方案中有3个项目(C#,. NET 4.0):

  • Abc.Business(Dll project)
  • Abc.Test(测试项目)
  • Abc.Ui(Wpf项目)

  • Abc.Business 是我的商业逻辑。它包含实体,经理,服务等。

  • Abc.Test Abc.Business 上有项目参考,是单元测试。他们运作良好。
  • Abc.Ui Abc.Business
  • 上有项目参考

Abc.Ui无法解析所有using Abc.Business; 错误日志显示:

  

错误命名空间'Abc'中不存在类型或命名空间名称'Business'(您是否缺少程序集引用?)c:\ Abc \ Abc.Ui \ ViewModels \ ClientViewModel.cs

此外,当我在文件顶部手动输入using时,Intelli-sense会显示“ Abc.Business.etc .. ”。所以Intelli-sense走在引用中但是没有构建。

有什么想法吗?

4 个答案:

答案 0 :(得分:15)

非常感谢GrhmHenk Holterman指出我的架构解决方案。实际上,这不是问题,但它让我找到它。问题是框​​架目标。默认情况下,Ui项目使用“客户端”配置文件定位到.NET 4.0 Framework。此配置文件无法引用非客户端配置文件。我发现在使用不充分的Debug Output Window中。 (我习惯于查看错误列表)

以下是显示的错误:

  

c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1360,9):警告MSB3253:引用的程序集“C:\ Abc \ Abc.Business \ bin \ Debug \ Abc .Business.dll“无法解析,因为它依赖于”System.Web,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“,这不在当前目标框架”.NETFramework,Version = v4中。 0,个人资料=客户端”。请删除不在目标框架中的程序集的引用,或考虑重新定位项目。

我将配置文件更改为正常(无),BOOM一切正常。Here's the MSDN page关于它

再次感谢您的时间。

答案 1 :(得分:4)

当我们在配置管理器中出现不一致时,我遇到过类似的问题。 (通过Build菜单访问)。

我们有一些构建x86变体的项目,一些构建x64变体,配置管理器为“Any CPU”和“Mixed Processingors”提供了“解决方案平台”。

我相信我们将“Business”构建为x86库,将我们的“UI”构建为x64(反之亦然),这意味着它无法找到程序集(针对正确的架构)并给出了错误我看到了,但是知识分子仍然在寻找源头。

我建议您查看您的项目平台和解决方案平台,并整理任何奇怪的内容。

答案 2 :(得分:3)

如果两者之间存在不兼容,我会发现问题。

一些提示/想法:

  • 删除引用并再次添加,作为对项目的引用
  • 重建解决方案并检查错误消息
  • 检查平台(版本)。也许UI是Client-platform,而Biz层使用完整平台。

答案 3 :(得分:0)

您是否已将Abc.Business项目的参考添加到Abc.Ui项目?您可以通过右键单击Abc.Ui中的References,选择Add Reference,然后转到Projects选项卡来实现。并选择Abc.Business。