Check that the assembly Asm1 is not using the assembly Asm2

Rule ND9901 Samples of Custom rules / Check Architecture

A sample rule to adapt to your need: warns if a particular assembly uses another particular assembly.

Generate such a rule for assemblies A and B by right-clicking the Dependency Matrix cell (B in row, A in column) or the Dependency Graph arrow from A to B, then clicking Generate a code rule that warns if this dependency exists. Adapt the generated rule to your needs.

How to fix

This is a sample rule, there is nothing to fix as is.

CQLinq source

This rule is written in CQLinq, C# LINQ over the NDepend code model. It ships with every new NDepend project: you can read it, adapt it, or use it as a starting point for your own custom rules.

// <Name>Check that the assembly Asm1 is not using the assembly Asm2</Name>
// <Id>ND9901:ExplicitId9901</Id>
warnif count > 0 from a in Application.Assemblies where 
  a.IsUsing ("Asm2".AllowNoMatch().MatchAssembly()) &&
  (a.Name == @"Asm1")
select new {
   a,
   Debt = 30.ToMinutes().ToDebt(),
   Severity = Severity.High
}

//<Expl>
// The *{0}* shouldn't use the *assembly Asm2* because *your reason*.
//</Expl>

//<Desc>
// A *sample rule to adapt to your need*: warns if a particular assembly
// uses another particular assembly.
//
// Generate such a rule for assemblies **A** and **B** by right-clicking the
// *Dependency Matrix* cell (**B** in row, **A** in column) or the
// *Dependency Graph* arrow from **A** to **B**, then clicking
// **Generate a code rule that warns if this dependency exists**.
// Adapt the generated rule to your needs.
//</Desc>

//<HowToFix>
// This is a *sample rule*, there is nothing to fix *as is*.
//</HowToFix>

Samples of Custom rules / Check Architecture: all 10 items