延续C#.NET中的程序集依赖性

Dog*_*ang 8 .net c# dependencies

我的C#项目 - 我们称之为SuperUI - 用于使用外部程序集中的类.现在它没有,但编译器不会让我在没有汇编引用的情况下构建项目.让我详细说明一下.

这个项目用于抛出和捕获一个自定义异常类 - SuperException它是从标准的System.Exception派生而来,并且存在于一个单独的预编译程序集中SuperAssembly.DLL,我引用了它.

最后,我认为这是一个毫无意义的练习,并且SuperExceptions在每种情况下都替换了System.SuitableStandardException.我删除了引用SuperException.DLL,但现在我在尝试编译项目时遇到了以下内容:

"SuperException"类型在未引用的程序集中定义.您必须添加对程序集'SuperException,Version = 1.1.0.0(...)'的引用

错误引用的源文件似乎不相关; 它是在IDE中突出显示的项目命名空间.

现在,这是事情:

  1. SuperException已从项目代码中删除所有用途.
  2. 与另一个在没有引用的情况下编译好的项目相比SuperException.DLL,我只引用了一个程序集 - 并且that引用了我的项目没有引用的任何内容.虽然这些依赖项中的任何一个都可能抛出SuperExceptions,但我只是捕获了基本的Exception类,并且无论如何......其他项目构建正常!
  3. 我已经完成了Visual Studio的"清洁解决方案"并且多次手动清除所有内容.

包含此引用并不是世界末日,我只是不明白为什么它还有必要.Nrrrgg.欢迎任何指示!

Hen*_*rik 3

它可能是一个传递引用,其中某些类型方法调用返回一个装箱(“向下转换”)的 SuperException 实例,例如 Exception,但是通过检查传递包含的代码中的代码,即来自外部方法调用的代码,编译器知道您需要能够在某个时刻获得有关该类型的信息。

\n\n

Resharper 会告诉您在哪里需要添加引用,您可以使用 L\xc3\xbctz Roeder\'s aka RedGate\'s Reflector 来扫描已编译的 IL,以获取对此类型的引用,分为两种方法:1)使用搜索工具,2)打开您正在使用的每个公共类型,对于需要“幽灵”程序集的公共类型,它会要求您指定其位置。

\n\n

当我引用 Castle.Windsor 而不是 Castle.MicroKernel 时,这种情况最常发生在我身上。:p

\n