构建.net程序集时,Phantom类型丢失

时间:2012-12-31 22:20:34

标签: .net class types assemblies .net-assembly

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

  

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

它附加在“程序”类中第一个方法的定义,显然没有提到它。

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

修改:找到C# type defined in an assembly that is not referenced;没有引用.csproj中的类型或dll

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

1 个答案:

答案 0 :(得分:2)

这通常是间接引用。换句话说,您引用已构建的程序集和 程序集引用“幻像”中的类型。因此,您不会在项目文件中看到它。你会在项目中看到构建该程序集,当然有一些可能因为崩溃而丢失了那个或只是忘了复制它。

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