“类型在未引用的程序集中定义”仅在我的计算机上

时间:2019-05-24 11:43:00

标签: c# .net .net-assembly

我正在尝试构建一个相当大的解决方案,并且带有一些扩展功能的静态类使我有些头疼。我将简化代码,基本上可以归结为以下内容:

有一个

public static typeP Convert(this typeD d, typeA a, typeB b) {
  return somethingOfTypeP;
}

有一个

public static IList<typeP> Convert(this IList<typeD> d, IList<typeA> a, IList<typeB> b) {
  return d.Select(x => x.Convert(a.FirstOrDefault(), b.FirstOrDefault()).ToList();
}

因此,实际上是一种扩展方法,该方法可以执行某些操作,而另一种方法可以将该概念扩展为列表。

typeA和typeB有一个曾祖父,该祖父位于该项目未引用的程序包中,但显然是在急需的地方(在其子项目中)引用的。

一切都可以在我所有同事的机器上正常运行,所有内容都可以构建,并且在构建时将“祖父的dll”很好地复制到该项目的二进制文件夹中-一切都很棒。但是在我的机器上,我得到

The type GreatGrandfather is defined in an assembly that is not referenced.
You must add a reference to assembly Greatgrandfathers.assembly, version=... etc.

..在Select(lambdaExpression)中调用第一个Convert时。

实际上,我对此感到非常困惑。如果类型在一处得到很好的解析(两个Convert方法的定义),为什么x => x.Convert(...)的调用存在问题?另外,为什么这只是我的计算机上的一个问题,而没有其他地方?我看不到有什么根本不同的东西,相同的目标框架,相同的程序包(从本地程序包源获取的内容)。 如果我确实使用Grandfathers.assembly添加了程序包,那么一切都会构建并正常工作,但是如果我进行了更改,则需要了解为什么需要它...任何想法,任何人?

1 个答案:

答案 0 :(得分:0)

为引用Grandfather.dll的项目检查.csproj文件中引用的物理路径。可能是您的同事为参考配置的路径与您计算机上的路径不同。