我的C#项目-我们将其称为SuperUI-用于利用外部程序集中的类。现在不行了,但是如果没有适当的程序集引用,编译器将不允许我构建项目。让我详细说明。
这个项目曾经抛出并捕获了一个自定义的异常类SuperException
,该类是从标准System.Exception派生的,并存在于我引用的单独的预编译程序集SuperAssembly.DLL
中。
最终,我认为这是没有意义的练习,并在每种情况下都将所有SuperExceptions
替换为System.SuitableStandardException。我删除了对SuperException.DLL
的引用,但是在尝试编译该项目时遇到了以下问题:
错误引用的源文件似乎不相关;它是在IDE中突出显示的项目 namespace 。
现在,这是东西:
SuperException
的所有使用。 SuperException.DLL
即可正常编译的项目相比,我仅引用了一个程序集-且that
没有引用我的项目自身未引用的任何内容。尽管这些依赖中的任何一个都可能抛出SuperExceptions
,但我只是捕获了基Exception类,无论如何……其他项目构建良好! 包括这个引用文献不是世界末日,我只是不明白为什么它再有必要了。 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/