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中突出显示的项目命名空间.
现在,这是事情:
SuperException已从项目代码中删除所有用途.SuperException.DLL,我只引用了一个程序集 - 并且that引用了我的项目没有引用的任何内容.虽然这些依赖项中的任何一个都可能抛出SuperExceptions,但我只是捕获了基本的Exception类,并且无论如何......其他项目构建正常!包含此引用并不是世界末日,我只是不明白为什么它还有必要.Nrrrgg.欢迎任何指示!
它可能是一个传递引用,其中某些类型方法调用返回一个装箱(“向下转换”)的 SuperException 实例,例如 Exception,但是通过检查传递包含的代码中的代码,即来自外部方法调用的代码,编译器知道您需要能够在某个时刻获得有关该类型的信息。
\n\nResharper 会告诉您在哪里需要添加引用,您可以使用 L\xc3\xbctz Roeder\'s aka RedGate\'s Reflector 来扫描已编译的 IL,以获取对此类型的引用,分为两种方法:1)使用搜索工具,2)打开您正在使用的每个公共类型,对于需要“幽灵”程序集的公共类型,它会要求您指定其位置。
\n\n当我引用 Castle.Windsor 而不是 Castle.MicroKernel 时,这种情况最常发生在我身上。:p
\n