首页 > 解决方案 > “类型是在未引用的程序集中定义的”仅在我的计算机上

问题描述

我正在尝试构建一个相当大的解决方案,一个带有一些扩展功能的静态类让我有点头疼。我会简化很多代码,基本上可以归结为以下几点:

有一个

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 方法的定义),为什么 x => x.Convert(...) 的调用会出现问题?另外,为什么只有我的电脑有问题,其他地方没有?我没有看到任何完全不同的东西,相同的目标框架,相同的包被拉下(来自本地包源的 nuget)。如果我确实添加了带有 Grandfathers.assembly 的包,一切都会构建并正常工作,但如果我进行此更改,我需要了解我为什么需要它......任何想法,任何人?

标签: c#.net.net-assembly

解决方案


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


推荐阅读