2016-11-07 170 views
1

我在Visual Studio 2015中有三个程序集(X,Y和Z)的解决方案。 X是依据Y和Z来使用它们。Visual Studio 2015中的依赖项验证

我想确保没有开发人员创建从Y到Z的引用。 看起来我唯一的选择是创建一个Layer Diagram并将命名空间Z设置为Y层中的“Forbidden Namespaces”。但是我仍然可以创建引用,所以Y依赖于Z,因为当我从Y尝试使用Z中的对象时,我将首先得到验证错误。

是否有任何可能的解决方案来获取仅用于非法依赖的验证检查?即如果我创建从Y到Z的参考。

回答

1

作为一种替代方法,您可以使用NDepend工具,该工具允许通过C# LINQ queries编写代码。

禁止集会Ÿ使用汇编Z中的规则可能看起来像:

warnif count > 0 
from a in Application.Assemblies where 
    a.IsUsing("Z".MatchAssembly()) && 
    a.Name == @"Y" 
select a 

其实这样的规则可以在一个单一的点击产生从dependency graph或从dependency matrix

NDepend genrate dependency rule

+0

我已经研究过ndepend,并且认为,如果VS不能满足需求,则可以作为替代方案。但我更喜欢Vs,因为我们已经拥有它,并且与预览版5中发布的实时验证一起,它可能非常酷。 – JerryA

+0

已经尝试了NDepend,实际上如果我使用你的例子它具有与VS相同的功能。所以我可以添加一个引用,也可以使用来自“Z”程序集的命名空间,但在尝试使用命名空间中的某些命令之前,我仍然没有警告。 – JerryA

+0

事实上,微妙的区别是,编译器会放弃使用命名空间的这个无用命令,并且由于NDepend将从编译代码收集依赖关系,所以它不会注意到这一点。 –