![](/img/trans.png)
[英]MsBuild deletes dependency dlls when I build, then debug in Visual Studio
[英]How do I get a smooth debug experience in Visual Studio 2008 when using dependency injection?
在使用依赖注入(DI)时,在Visual Studio 2008中提供平滑调试体验的最佳实践是什么?
具体来说,假设我有一个包含3个项目的解决方案:
MySolution: - ConsoleApp - ServiceInterface - ConcreteService
ConsoleApp具有对ServiceInterface项目的引用,并使用DI容器来解析具体类型(来自ConcreteService项目)。
当我开始调试时,ConsoleApp将无法加载具体类型,除非ConsoleApp bin \\ debug目录中存在ConcreteService.dll。
所以问题是,如何将ConcreteService.dll导入ConsoleApp的bin \\ debug文件夹?
我想到的一些选项是构建后的脚本,在ConsoleApp中将项目引用添加到ConcreteService并手动复制dll。
所有这些方法都有一些优点/缺点,所以我很想知道是否有其他方法,如果没有,人们更喜欢哪种方法。
只需添加对具体实现的引用即可。
顺便提一下,在同一个程序集中使用接口和实现在架构上是完全可行的。 你可能有充分的理由不这样做,但人们似乎本能地回避这一点,但没有充分的理由。
您可以将每个项目的输出目录更改为同一目录。 我使用MySolution \\ Debug来调试DI项目以避免添加引用。
解决第一条评论
如果您有多个使用DI来获得相同依赖关系的应用程序,该怎么办? 例如,如果我有多个应用程序使用的公共数据访问层?
可能的问题是将所有内容一起转储到同一个调试文件夹中以获得解决方案。 您只能一次调试一个应用程序,只要您测试Release版本,就应该没问题。
您还可以为解决方案中的各种应用程序创建不同的构建配置,并为每个配置将输出文件夹设置为MySolution \\ ConfigurationXDebug (或类似的东西)。 这有额外的好处,您可以明确选择构建适当的项目,但更多的工作要设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.