public void CheckSetCopyLocalToFalseOnGacAssemblies() { string gacPath = @"C:\windows\gac"; ResolveComReference rcr = new ResolveComReference(); rcr.BuildEngine = new MockEngine(); ArrayList taskItems = new ArrayList(); 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.IsTrue(nonGacNoPrivate.GetMetadata(ItemMetadataNames.copyLocal) == "true", "Non Gac assembly, missing Private, should be TRUE"); Assert.IsTrue(gacNoPrivate.GetMetadata(ItemMetadataNames.copyLocal) == "false", "Gac assembly, missing Private, should be FALSE"); // if Private is set, it takes precedence Assert.IsTrue(nonGacPrivateFalse.GetMetadata(ItemMetadataNames.copyLocal) == "false", "Non Gac assembly, Private false, should be FALSE"); Assert.IsTrue(gacPrivateFalse.GetMetadata(ItemMetadataNames.copyLocal) == "false", "Gac assembly, Private false, should be FALSE"); Assert.IsTrue(nonGacPrivateTrue.GetMetadata(ItemMetadataNames.copyLocal) == "true", "Non Gac assembly, Private true, should be TRUE"); Assert.IsTrue(gacPrivateTrue.GetMetadata(ItemMetadataNames.copyLocal) == "true", "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]; ArrayList taskItems = new ArrayList(); TaskItem nonGacNoPrivate = new TaskItem(@"C:\windows\gar\test1.dll"); nonGacNoPrivate.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); TaskItem gacNoPrivate = new TaskItem(@"C:\windows\gac\assembly1.dll"); gacNoPrivate.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); TaskItem nonGacPrivateFalse = new TaskItem(@"C:\windows\gar\test1.dll"); nonGacPrivateFalse.SetMetadata(ItemMetadataNames.privateMetadata, "false"); nonGacPrivateFalse.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); TaskItem gacPrivateFalse = new TaskItem(@"C:\windows\gac\assembly1.dll"); gacPrivateFalse.SetMetadata(ItemMetadataNames.privateMetadata, "false"); gacPrivateFalse.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); TaskItem nonGacPrivateTrue = new TaskItem(@"C:\windows\gar\test1.dll"); nonGacPrivateTrue.SetMetadata(ItemMetadataNames.privateMetadata, "true"); nonGacPrivateTrue.SetMetadata(ItemMetadataNames.embedInteropTypes, "true"); TaskItem 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.IsTrue ( nonGacNoPrivate.GetMetadata(ItemMetadataNames.copyLocal) == (enabledNoPIA ? "false" : "true"), fxVersion + ": Non Gac assembly, missing Private" ); Assert.IsTrue ( gacNoPrivate.GetMetadata(ItemMetadataNames.copyLocal) == (enabledNoPIA ? "false" : "false"), fxVersion + ": Gac assembly, missing Private" ); // if Private is set, it takes precedence Assert.IsTrue ( nonGacPrivateFalse.GetMetadata(ItemMetadataNames.copyLocal) == (enabledNoPIA ? "false" : "false"), fxVersion + ": Non Gac assembly, Private false" ); Assert.IsTrue ( gacPrivateFalse.GetMetadata(ItemMetadataNames.copyLocal) == (enabledNoPIA ? "false" : "false"), fxVersion + ": Gac assembly, Private false" ); Assert.IsTrue ( nonGacPrivateTrue.GetMetadata(ItemMetadataNames.copyLocal) == (enabledNoPIA ? "false" : "true"), fxVersion + ": Non Gac assembly, Private true, should be TRUE" ); Assert.IsTrue ( gacPrivateTrue.GetMetadata(ItemMetadataNames.copyLocal) == (enabledNoPIA ? "false" : "true"), fxVersion + ": Gac assembly, Private true, should be TRUE" ); } }