繁体   English   中英

如何强制 Visual Studio 在编译时检查损坏的文件引用

[英]How to force visual studio to check for broken file references at compile time

这个问题专门关于文件引用

我的项目引用了库 A。库 A 引用了库 B。如果我不添加对库 B 的直接引用,项目将编译正常,但随后抛出“无法加载文件或程序集 B”尝试加载库 A 时在运行时出现异常。

那么,如何强制 Visual Studio 在编译时检查所有损坏的文件引用? 或者,是否有任何其他方法可以找到这些损坏的引用(工具、VS 扩展等)?

这是一个重现该行为的示例项目。 https://github.com/RaikolAmaro/BrokenDependencies

这不是编译时问题,因为在编译时,所有必需的引用都存在并考虑在内。 否则,它一开始就不会编译。

这是一个运行时问题,Visual Studio 不太关心想在 output 目录中拥有什么。 这就是为什么您可以完全控制要从 NuGet 包以及其他项目中复制哪些元素。 为什么? 因为您可能正在使用安装程序或打包解决方案,或者有一些神奇的程序集解析代码来查找您的依赖项。 您可能依赖于插件或基于配置的依赖注入。 太多的事情会阻碍这样的扫描。

还有一个问题。 虽然程序集可能依赖于某个其他程序集,但您的代码可能不需要它。 在这种情况下,如果您的代码从不加载需要此其他程序集的代码路径,那么您不需要在 output 目录中运行它。

有一些工具可以扫描项目中的所有代码路径、它们所依赖的程序集等等。 这些可用于查看您是否拥有运行代码所需的所有二进制文件。

这些工具有问题。 上面提到的同样的问题。 如果您通过配置或约定(例如基于反射)使用依赖注入或进行自己的反射,或依赖于dynamic关键字,那么这些工具可能无法找到您依赖的所有代码路径,并且可能需要一些配置或 in-源注释以在扫描时弄清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM