2016-11-07 168 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將從編譯代碼收集依賴關係,所以它不會注意到這一點。 –