创建项目依赖项并向项目添加引用仍导致“找不到类型或命名空间名称”

时间:2011-02-26 15:41:24

标签: c# visual-studio-2010

我在Visual Studio 2010中有一个包含6个项目的解决方案(1个Web应用程序,4个c#类库,1个c#控制台应用程序)。

控制台应用程序是我的测试工具,用它来测试外部Web服务,从我的其他库中的方法输出和一般实验。此测试控制台应用程序只有一个依赖于另一个项目依赖项,其中一个是C#库。

引用的C#库非常简单:

namespace GowallaAPI
{
    public class Gowalla
    {
       private static readonly ILog log = LogManager.GetLogger(typeof(Gowalla));
       public SpotsInRadius GetGowallaSpotsInRadius(decimal lat, decimal lon, int radius) {
           //snip
       }
       //other methods removed for brevity//
    }
}

我已在控制台应用程序中添加了一个项目引用:

enter image description here

我还右键点击了参考文献并选择了添加参考...

you can see the Gowalla reference already exists in this example picture

然后,我去了我的控制台应用程序并添加了

using Gowalla;

然后点击构建。我明白了:

  

类型或命名空间名称'Gowalla'   无法找到(你错过了吗?   使用指令或程序集   引用?)

我完全不知所措。我有:

  1. 完全删除依赖项(然后删除Gowalla引用重建),然后重新添加它们。
  2. 我已完全删除了依赖项(如#1),然后仅将它们添加为程序集(Add Reference ...)。
  3. 检查控制台应用程序和类库的目标框架是否为.NET 4.0 - 它们是。
  4. 检查Gowalla类库中的所有必要项是否在Build属性中标记为Compile。
  5. 摇晃项目的构建顺序,以便在构建库之后至少构建控制台应用程序。
  6. 做了一些喊叫和咒骂。
  7. 放弃然后返回。
  8. 将Gowalla C#库完全移到自己的项目中,然后引用程序集(如2)。
  9. 在Gowalla玩一个构造函数而不是:

    公共Gowalla() {

    } ......没有任何效果!

  10. 有人能看到明显的东西吗?我是完全愚蠢的吗?我已经在这几个小时了,我很想知道这是一个经典的“木树林”时刻......

    帮助表示赞赏。

    编辑1:这是从Reflector公开的Gowalla.dll:

    enter image description here

    答案:在@ gov有用的建议删除GowallaAPI库并尝试添加其他内容之后我做了并开始添加GowallaAPI库中的旧代码。一切顺利,直到我补充:

    private static readonly ILog log = LogManager.GetLogger(typeof(Gowalla));
    
    log4net由于一些完全奇怪的原因不断抛出构建。唉,在删除该行(对log4net的引用仍然存在)之后,该项目在此后构建并完美运行。感谢@gov让我走上了正确的道路! :d

4 个答案:

答案 0 :(得分:8)

我遇到了与log4net完全相同的问题,并且在将托管项目的目标框架从“.NET Framework 4.0 Client Profile”更改为“.NET Framework 4.0”后解决了该问题

答案 1 :(得分:1)

我在评论中向他提出了各种各样的建议,看起来其中一个已经解决了。

@dooburt只是忘了GowallaAPI并创建一个单独的项目,就像我说的,sample.common并有一个名为utilities的公共类,所以在这里添加该项目,只需检查类型库的新项目,看看问题是什么

答案 2 :(得分:1)

查看类库和测试工具的目标框架。当类库设置为.Net Framework 4并且测试工具是.Net Framework 4 Client Profile时,我遇到了这个错误。

答案 3 :(得分:0)

看看.csproj XML,看看引用是否有什么奇怪之处,其中之一:

  <Reference Include="Gowalla" ... />
  <ProjectReference Include=".\path to\Gowalla.csproj" ... />