Visual Studio中参考程序集和公共程序集之间的区别是什么

Hol*_*olf 12 dll visual-studio visual-studio-2013

我一直在研究Visual Studio 2013中Web性能测试插件的一些问题.当添加对必要dll的引用时(例如Microsoft.VisualStudio.QualityTools.WebTestFramework.dll),我注意到"Add References"窗口中有相同dll的多个条目.在我的系统上,我有五个选择WebTestFramework.

我看到的其中一些来自早期版本的Visual Studio,它们也安装在我的机器上.但是,我看到有些是重复的,例如:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ReferenceAssemblies\WebTestFramework.dll

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\WebTestFramework.dll

我比较了这两个文件的哈希值,它们是相同的.那么,为什么它们会在我的VS 2013(v12.0)安装中出现两次?为什么同时存在'ReferenceAssemblies'和'PublicAssemblies'文件夹?

Han*_*ant 10

好吧,理想情况下,实现程序集不会出现在列表中.但是对列表中显示的内容的控制不够精细,它只能由目录配置,而不能由单个程序集配置.另一个限制是,Microsoft经常被迫为程序集选择不太理想的存储位置,以保持与以前VS版本的向后兼容性,因此它们不会破坏现有项目.而测试框架已经通过VS版本发生了很大的变化,花了一段时间来解决所有问题.

提供参考组件时,请务必选择参考组件.它们旨在将您与这些快速更改隔离开来,并且通常故意不是实现程序集的副本.当你选择实现程序集时,你会得到它,但你可能会在下一个VS版本中破坏你的测试项目.因人而异.