我的C#项目-我们将其称为SuperUI-用于利用外部程序集中的类。现在不行了,但是如果没有适当的程序集引用,编译器将不允许我构建项目。让我详细说明。

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

最终,我认为这是没有意义的练习,并在每种情况下都将所有SuperExceptions替换为System.SuitableStandardException。我删除了对SuperException.DLL的引用,但是在尝试编译该项目时遇到了以下问题:



错误引用的源文件似乎不相关;它是在IDE中突出显示的项目 namespace 。

现在,这是东西:

  • 从项目代码中消除了对SuperException的所有使用。
  • 与另一个无需引用SuperException.DLL即可正常编译的项目相比,我仅引用了一个程序集-且that没有引用我的项目自身未引用的任何内容。尽管这些依赖中的任何一个都可能抛出SuperExceptions,但我只是捕获了基Exception类,无论如何……其他项目构建良好!
  • 我已经完成了Visual Studio的“清洁解决方案”,并多次手工清除了所有内容。

  • 包括这个引用文献不是世界末日,我只是不明白为什么它再有必要了。 Nrrrgg。任何指针欢迎!

    最佳答案

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

    Resharper会告诉您在什么情况下需要添加引用,您可以使用LützRoeder的aka RedGate的Reflector来通过两种方式扫描编译后的IL对该类型的引用:1)使用搜索功能,2)打开您正在使用的每种公共(public)类型,以及需要“ghost”程序集的公共(public)类型,都会要求您指定其位置。

    当我引用CaSTLe.Windsor而不是CaSTLe.MicroKernel时,这最经常发生在我身上。 :p

    关于c# - 在C#.NET中徘徊的程序集依赖关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9173/

    10-13 09:29