public void CheckSetCopyLocalToFalseOnGacAssemblies() { string gacPath = @"C:\windows\gac"; var rcr = new ResolveComReference(); rcr.BuildEngine = new MockEngine(); var taskItems = new List <ITaskItem>(); TaskItem nonGacNoPrivate = new TaskItem(@"C:\windows\gar\test1.dll"); TaskItem gacNoPrivate = new TaskItem(@"C:\windows\gac\assembly1.dll"); TaskItem nonGacPrivateFalse = new TaskItem(@"C:\windows\gar\test1.dll"); nonGacPrivateFalse.SetMetadata(ItemMetadataNames.privateMetadata, "false"); TaskItem gacPrivateFalse = new TaskItem(@"C:\windows\gac\assembly1.dll"); gacPrivateFalse.SetMetadata(ItemMetadataNames.privateMetadata, "false"); TaskItem nonGacPrivateTrue = new TaskItem(@"C:\windows\gar\test1.dll"); nonGacPrivateTrue.SetMetadata(ItemMetadataNames.privateMetadata, "true"); TaskItem gacPrivateTrue = new TaskItem(@"C:\windows\gac\assembly1.dll"); gacPrivateTrue.SetMetadata(ItemMetadataNames.privateMetadata, "true"); taskItems.Add(nonGacNoPrivate); taskItems.Add(gacNoPrivate); taskItems.Add(nonGacPrivateFalse); taskItems.Add(gacPrivateFalse); taskItems.Add(nonGacPrivateTrue); taskItems.Add(gacPrivateTrue); rcr.SetCopyLocalToFalseOnGacOrNoPIAAssemblies(taskItems, gacPath); // if Private is missing, by default GAC items are CopyLocal=false, non GAC CopyLocal=true Assert.Equal("true", nonGacNoPrivate.GetMetadata(ItemMetadataNames.copyLocal)); // "Non Gac assembly, missing Private, should be TRUE" Assert.Equal("false", gacNoPrivate.GetMetadata(ItemMetadataNames.copyLocal)); // "Gac assembly, missing Private, should be FALSE" // if Private is set, it takes precedence Assert.Equal("false", nonGacPrivateFalse.GetMetadata(ItemMetadataNames.copyLocal)); // "Non Gac assembly, Private false, should be FALSE" Assert.Equal("false", gacPrivateFalse.GetMetadata(ItemMetadataNames.copyLocal)); // "Gac assembly, Private false, should be FALSE" Assert.Equal("true", nonGacPrivateTrue.GetMetadata(ItemMetadataNames.copyLocal)); // "Non Gac assembly, Private true, should be TRUE" Assert.Equal("true", gacPrivateTrue.GetMetadata(ItemMetadataNames.copyLocal)); // "Gac assembly, Private true, should be TRUE" }
public void CheckSetCopyLocalToFalseOnEmbedInteropTypesAssemblies() { string gacPath = @"C:\windows\gac"; ResolveComReference rcr = new ResolveComReference(); rcr.BuildEngine = new MockEngine(); // the matrix of TargetFrameworkVersion values we are testing string[] fxVersions = { "v2.0", "v3.0", "v3.5", "v4.0" }; for (int i = 0; i < fxVersions.Length; i++) { string fxVersion = fxVersions[i]; var taskItems = new List <ITaskItem>(); var nonGacNoPrivate = new TaskItem(@"C:\windows\gar\test1.dll"); nonGacNoPrivate.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); var gacNoPrivate = new TaskItem(@"C:\windows\gac\assembly1.dll"); gacNoPrivate.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); var nonGacPrivateFalse = new TaskItem(@"C:\windows\gar\test1.dll"); nonGacPrivateFalse.SetMetadata(ItemMetadataNames.privateMetadata, "false"); nonGacPrivateFalse.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); var gacPrivateFalse = new TaskItem(@"C:\windows\gac\assembly1.dll"); gacPrivateFalse.SetMetadata(ItemMetadataNames.privateMetadata, "false"); gacPrivateFalse.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); var nonGacPrivateTrue = new TaskItem(@"C:\windows\gar\test1.dll"); nonGacPrivateTrue.SetMetadata(ItemMetadataNames.privateMetadata, "true"); nonGacPrivateTrue.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); var gacPrivateTrue = new TaskItem(@"C:\windows\gac\assembly1.dll"); gacPrivateTrue.SetMetadata(ItemMetadataNames.privateMetadata, "true"); gacPrivateTrue.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); taskItems.Add(nonGacNoPrivate); taskItems.Add(gacNoPrivate); taskItems.Add(nonGacPrivateFalse); taskItems.Add(gacPrivateFalse); taskItems.Add(nonGacPrivateTrue); taskItems.Add(gacPrivateTrue); rcr.TargetFrameworkVersion = fxVersion; rcr.SetFrameworkVersionFromString(rcr.TargetFrameworkVersion); rcr.SetCopyLocalToFalseOnGacOrNoPIAAssemblies(taskItems, gacPath); bool enabledNoPIA = false; switch (fxVersion) { case "v4.0": enabledNoPIA = true; break; default: break; } // if Private is missing, by default GAC items are CopyLocal=false, non GAC CopyLocal=true Assert.Equal(nonGacNoPrivate.GetMetadata(ItemMetadataNames.copyLocal), (enabledNoPIA ? "false" : "true")); Assert.Equal(gacNoPrivate.GetMetadata(ItemMetadataNames.copyLocal), (enabledNoPIA ? "false" : "false")); // if Private is set, it takes precedence Assert.Equal(nonGacPrivateFalse.GetMetadata(ItemMetadataNames.copyLocal), (enabledNoPIA ? "false" : "false")); Assert.Equal(gacPrivateFalse.GetMetadata(ItemMetadataNames.copyLocal), (enabledNoPIA ? "false" : "false")); Assert.Equal(nonGacPrivateTrue.GetMetadata(ItemMetadataNames.copyLocal), (enabledNoPIA ? "false" : "true")); Assert.Equal(gacPrivateTrue.GetMetadata(ItemMetadataNames.copyLocal), (enabledNoPIA ? "false" : "true")); } }