引用的程序集引用错误

时间:2013-10-10 09:14:02

标签: c# reference .net-assembly

我有3个项目。 A,B和X

Project X是一个类库,它包含我的EntityFramework EDMX数据库模型。 项目X在项目A中引用。 我想在项目B中使用项目A和项目X.

我发现这有点复杂: 我有4个项目。 A,B,C和X

Project X是一个类库,它包含我的EntityFramework EDMX数据库模型。 项目A是Silverlight项目。 项目B是SilverlightApplication.Web项目。 项目C是一个类库项目。

项目X在项目B中引用。 项目A以项目B为参考。项目B在项目A中自动生成。 项目C应参考项目A,B和X.

错误讯息: “类型”ProjectX.Location“存在于”D:\ Projectgroup \ ProjectA \ bin \ ProjectA.dll“和”D:\ Projectgroup \ ProjectX \ bin \ ProjectX.dll“

当我查看项目A中项目B的自动生成代码时,我看到项目X的一些DatabaseModel(edmx)类,但不是全部,它们都在Project X的命名空间中。

3 个答案:

答案 0 :(得分:0)

尝试使用extern Alias它允许您将程序集包装在别名命名的根级命名空间中,这使它们可以在同一个文件中使用。虽然我建议你检查代码的结构,以便可以避免这种情况

答案 1 :(得分:0)

以表格

引用相同的程序集
     /==>A==\
    /        \
    B=======> X

根本不是问题,不应该导致任何错误或警告... 只要 X通过两条路线都是相同的身份。所以基本上确保你只有一个版本的X 。如果您没有启用强命名,这会更容易,但即使使用强命名,也应该确保您的引用正确。

答案 2 :(得分:0)

我认为您在同一名称空间中定义了两个具有相同名称但不同程序集的不同类型的问题。

例如,我在以下情况中提到了错误:

ClassLibrary1.Class1.cs (Assembly1)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary1
{
  public class Class1
  {
  }
}

ClassLibrary2.Class1.cs (Assembly2)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary1
{
  public class Class1
  {
  }
}

Program.cs (Assembly3)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using ClassLibrary1;


namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
        Class1 a;
    }
  }
}

enter image description here

因此,请确保您的不同程序集的名称类型不同。