场合
程序集Adam.dll具有对程序集Frank.dll的引用。 Adam.dll放在共享程序集文件夹中,然后由我的应用程序作为二进制引用引用。
如果我运行我的应用程序,它将崩溃(并且正确)因为Frank.dll丢失。
但是,如果我将Frank.dll放在共享程序集文件夹中,.net编译器足够智能,也可以将其移动到bin文件夹,即使我的应用程序中没有直接引用Frank.dll,我的应用程序也会运行
我想要什么
<。> .net编译器显然足够智能,以实现我的应用程序需要Frank.dll。是否可以设置编译器选项以在编译时将其标记为错误?谢谢,
答案 0 :(得分:0)
我不确定你在谈论什么样的“共享程序集”文件夹,但我不太确定Visual Studio是否真的“意识到你的应用程序需要Frank.dll” - 我怀疑它更多可能它正在复制它在那里找到的所有程序集。如果你在那里放置一个无关的组件会发生什么?如果您可以了解更多详细信息,请确定您正在创建的项目类型,以及如何添加对Adam.dll的引用,这将有所帮助。
我不知道在所有情况下强制复制依赖程序集的任何方法 - 因为实际上,可能不是必需的。例如,如果您使用Adam.dll的某些功能,则可能只需要Frank.dll。
如果您使用的Adam中的某些类型在其公共API中暴露了Frank的类型,那么然后编译器会给您一个错误 - 但显然您不希望向公共API只是为了踢。
虽然我知道这不是您正在寻找的答案,但我认为您可能只需要笑着承担它......您的代码是否具有足够复杂的依赖关系,这是一个真正的问题?由于缺少依赖关系,您是否可能浪费足够的时间来尝试提出一个“修复”它的方案?你可以编写一个程序,它加载你的应用程序的程序集,找到它的所有依赖项,然后检查它们是否全部存在 - 并且被递归。它可能会忽略GAC中已存在的依赖关系。我只是不确定它是否值得。