public void ReferenceTablePrimaryToPrimaryToDependencyWithOneInBlackList() { ReferenceTable referenceTable; MockEngine mockEngine; ResolveAssemblyReference rar; Hashtable blackList; AssemblyNameExtension engineAssemblyName = new AssemblyNameExtension("Microsoft.Build.Engine, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); AssemblyNameExtension xmlAssemblyName = new AssemblyNameExtension("System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); AssemblyNameExtension dataAssemblyName = new AssemblyNameExtension("System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); Reference enginePrimaryReference = new Reference(isWinMDFile, fileExists, getRuntimeVersion); Reference xmlPrimaryReference = new Reference(isWinMDFile, fileExists, getRuntimeVersion); Reference dataDependencyReference = new Reference(isWinMDFile, fileExists, getRuntimeVersion); TaskItem taskItem = new TaskItem("Microsoft.Build.Engine"); enginePrimaryReference.MakePrimaryAssemblyReference(taskItem, false, ".dll"); enginePrimaryReference.FullPath = "FullPath"; ITaskItem taskItem2 = new TaskItem("System.Xml"); xmlPrimaryReference.FullPath = "FullPath"; xmlPrimaryReference.MakePrimaryAssemblyReference(taskItem2, false, ".dll"); // Make engine depend on xml primary when xml primary is a primary reference as well xmlPrimaryReference.AddSourceItems(enginePrimaryReference.GetSourceItems()); xmlPrimaryReference.AddDependee(enginePrimaryReference); dataDependencyReference.FullPath = "FullPath"; dataDependencyReference.MakeDependentAssemblyReference(xmlPrimaryReference); InitializeMockEngine(out referenceTable, out mockEngine, out rar); AddReferencesToReferenceTable(referenceTable, engineAssemblyName, dataAssemblyName, null, xmlAssemblyName, enginePrimaryReference, dataDependencyReference, null, xmlPrimaryReference); InitializeExclusionList(referenceTable, new AssemblyNameExtension[] { dataAssemblyName }, out blackList); string subsetName = ResolveAssemblyReference.GenerateSubSetName(new string[] { "Client" }, null); string warningMessage = rar.Log.FormatResourceString("ResolveAssemblyReference.FailBecauseDependentAssemblyInExclusionList", taskItem.ItemSpec, dataAssemblyName.FullName, subsetName); string warningMessage2 = rar.Log.FormatResourceString("ResolveAssemblyReference.FailBecauseDependentAssemblyInExclusionList", taskItem2.ItemSpec, dataAssemblyName.FullName, subsetName); mockEngine.AssertLogContains(warningMessage); mockEngine.AssertLogContains(warningMessage2); Dictionary<AssemblyNameExtension, Reference> table = referenceTable.References; Assert.False(table.ContainsKey(xmlAssemblyName)); // "Expected to not find the xmlAssemblyName in the referenceList" Assert.False(table.ContainsKey(engineAssemblyName)); // "Expected to not find the engineAssemblyName in the referenceList" Assert.False(table.ContainsKey(dataAssemblyName)); // "Expected to not find the dataAssemblyName in the referenceList" }