Microsoft.DependencyValidation.Analyser 是什么,为什么 Visual Studio 2017 会强制安装这个包?

What is Microsoft.DependencyValidation.Analyser and why does Visual Studio 2017 force install the package?

我刚刚安装了 Visual Studio 2017(在新的 Windows 10 VM 上)以准备升级路径形式 2015。我们现有的项目使用 .Net 4.5.2。 (ASP.NET classic/not核心)

VS 2017 似乎坚持要向我当前解决方案中的每个项目添加 Microsoft.DependencyValidation.Analyser 包依赖。

这种依赖是什么? 为什么被迫进入项目?撤消结帐无济于事,它会立即返回并再次添加。 如果我签入包含更改的 package.config 文件,假设团队成员没有进行任何更新,它会破坏 VS2015 吗?

如果您有一个数据访问项目,该项目应该完全不受 Entity Framework 或 ADO.NET 等数据持久性框架或其他技术的影响,您如何确保甚至是否已经编写了依赖于这些依赖项的一行代码?您可以编写接口,使其完全不可知,但如何阻止开发人员添加对 ADO.NET 的引用?

这就是 Microsoft.DependencyValidation.Analyser 会为您做的。当您构建时,它将分析所有项目并确保它不依赖于您指定的程序集。

这确保您的体系结构不仅仅是一个漂亮的图表,而且您的开发人员实际上遵循它。这不仅限于 ADO.NET 和其他主要程序集,甚至包括您自己构建的程序集。

您可以告诉 Visual Studio 在架构损坏或编译失败时发出警告。

这不是什么新鲜事并且已经存在,但我猜想 VS 2017 使执行此类规则变得更加容易。这是否是一个好主意,取决于项目。如果我正在编写一个快速的一次性应用程序或 POC,那么我会关闭它。但对于需要数月开发和数月至数年维护的项目,它可能非常有用。然而,有些人可能不同意我的看法。重要的是,如果我们需要它,它就可以作为一种工具存在。

更多信息here

好吧,原来 Visual Studio 的黑暗 UI 模式让鲨鱼跳了起来。

以下是 Microsoft.DependencyValidation.Analyzer 如何神奇地安装的高度戏剧化的版本......几乎是神奇的。 (也有我上面问题的答案)。

在您刚刚从源代码管理下载您的解决方案并首次启动它的新虚拟机上,您希望 Nuget 警告您需要重新加载依赖项。因此,您快速阅读 VS 2017 上出现的消息,嘿,您已经使用它 20 年了,您希望他们不断改进,对吧,他们支持您吗?那么从您的眼角,您会看到解决方案管理器顶部以黄色突出显示的 'Dependency' 和 'updated' 一词。

你是做什么的?单击“更新”(认为您的 Nuget 包正在下载中......傻瓜!!!)BOOM!

30 分钟后,您的所有 63 个项目都已签出,它们似乎有相同的 package.config 更改。

你去 WUT。尝试撤消结帐...抱歉,VS 帮您找到了(r 回来)...它会还原代码,重新加载项目并再次添加依赖项)。

你首先没有意识到发生了什么。你很愤怒,你 运行 一个小时都没有重复同样的事情,最后你半夜把笔记本电脑扔出 window 并痛哭。

过了一会儿,您慢慢站起来,将笔记本电脑拿回来,通过破裂的屏幕,您决定关闭 visual studio,重新打开它,然后尝试另一个 b运行ch 代码。

这次您更仔细地阅读了黄色小标签并起了疑心,所以您没有点击“更新”按钮。您单击 link 将您带到一个通用页面,您必须在其中使用 Bing err Ctrl+F 来查找主题,这只是一个通用博客 post。不过,一切都很好。然后它明白发生了什么。颤抖着,多亏了破碎 window 的冷风,但欣喜若狂 'fixed',你把一切都抛到空中,结束了。

第二天早上,你又开始了Visual Studio。您不加载任何解决方案。相反,您打开源代码管理资源管理器,撤消签出所有内容,欢呼,一切都已还原,您的解决方案不再有烦人的更改。

快乐和哭泣(成功的喜悦或破裂的屏幕和笔记本电脑的内脏溢出的悲伤)你打开你的解决方案和 WHAM!那个怪异的小黄色警告又回来了……你站在那里感到困惑……你在尖叫……在你的脑海里……为什么-为什么?我有一个 3 人开发团队,我可以直接走到某人面前告诉他们你不应该添加该参考,因为它打破了深奥的模式。但是不...我已经为 MSDN 许可证支付了数百万英镑,因此我的 'Enterprise' 软件将坚持做一些

  • 为团队中的其他人打破一切(VS2017 Dependency voodoo 与 VS2015 版本不同)
  • 让你的 VM 慢到像爬行一样(它确实 运行 内存不足并崩溃了两次,只是试图构建)。
  • 并给我比我关心的更多的错误信息。实际上,我不再看错误面板了,因为我无法判断 Visual Studio 是否认真对待错误,或者只是因为应用程序似乎可以正常工作而拉动我的锁链(Yay Razor 语法检查!!!)

此时你只是在哭泣......你不知道为什么...

咆哮结束

如果 Visual Studio 的任何人读到这里,这就是我想要的 Visual Studio(20 年)

  1. 快速加载(是的,我的解决方案中有 63 个项目,我希望它们快速加载,不,我不会将它们分成不同的解决方案)
  2. 快速编译(C# 和 Typescript 是我使用的,但你知道)我有一个巨大的内存,使用它!
  3. 一致的 Intellisense(自动完成,也许可以借鉴 VSCode?) 任何其他需要几分之一秒的额外时间都会破坏我的工作效率,我不想打开它,所以请让开我!

20年了吧,我想我不应该屏住呼吸!

P.S。我确实设法找到了一个设置来禁用该警告,但我认为实施 属性 的人忘记告诉其他建筑物中正在执行解决方案资源管理器的人,所以它不起作用。