0

我正在使用 Visual Studio 2010 在 C#(.NET Framework 3.5 控制台应用程序)中开发一个 .NET 应用程序。(Win7 64 位)机器崩溃后,我将我的项目从旧 HD 复制到新的。现在在新机器上,每当我构建时,我都会收到错误消息:

“Bloomberglp.AppPortalApi.DataPersistence.ExtensibleDataObject”类型是在未引用的程序集中定义的。您必须添加对程序集“Bloomberglp.AppPortalAPI, version=1.3.5.1, Culture=neutral, PublicKeyToken=51f5d93763bdb58e”的引用。

附在“Program”类中第一个方法的定义中,显然没有提及。

但是,我没有在我的项目中的任何地方使用这种类型,并且我的项目中的任何引用都没有使用它。我以前使用过它,但是所有对它的引用都被删除了……所以我想。我搜索了它,但在任何 .cs 文件中都找不到它。它在对象浏览器中也找不到。那么我应该在哪里/如何寻找它?

编辑:发现在未引用的程序集中定义的 C# 类型;.csproj 中没有对类型或 dll 的引用

在 x86 和任何 cpu 之间切换我的目标并重新编译都没有效果,切换回来也没有效果。

4

1 回答 1

2

这通常是间接引用。换句话说,您引用了一个已经构建的程序集,并且程序集引用了“幻像”中的一种类型。所以你根本不会在你的项目文件中看到它。您会在构建该程序集的项目中看到,您肯定会因为崩溃而丢失该程序集或只是忘记复制它。

解决此问题的另一种经典方法是针对客户端配置文件,这是 VS2010 的祸害,默认情况下会选择它。如果程序集引用了不属于客户端配置文件一部分的程序集(如 System.Web)中的类型,那么当程序集被拒绝时,编译器会变得愚蠢,因为它需要一个不可用的 .NET 框架程序集。您会收到有关它的警告,但是当您专注于错误时很容易忽略它。否则与彭博所从事的业务非常匹配,它是一家网状公司。您可以通过将框架目标更改为完整目标来修复该目标。

于 2012-12-31T23:49:15.610 回答