public void ConflictWithBackVersionPrimaryWithAutoUnify() { ResolveAssemblyReference t = new ResolveAssemblyReference(); MockEngine e = new MockEngine(_output); t.BuildEngine = e; t.Assemblies = new ITaskItem[] { new TaskItem("B"), new TaskItem("A"), new TaskItem("D, Version=1.0.0.0, Culture=neutral, PublicKeyToken=aaaaaaaaaaaaaaaa") }; t.AutoUnify = true; t.SearchPaths = new string[] { s_myLibrariesRootPath, s_myLibraries_V2Path, s_myLibraries_V1Path }; t.TargetFrameworkDirectories = new string[] { s_myVersion20Path }; bool result = Execute(t); Assert.Equal(1, e.Warnings); // @"Expected one warning." e.AssertLogContainsMessageFromResource(AssemblyResources.GetString, "ResolveAssemblyReference.FoundConflicts", "D"); Assert.Empty(t.SuggestedRedirects); Assert.Equal(3, t.ResolvedFiles.Length); Assert.True(ContainsItem(t.ResolvedFiles, s_myLibraries_V1_DDllPath)); // "Expected to find assembly, but didn't." }
public void MixedWinMDGoodReferenceToMscorlib() { // Create the engine. MockEngine engine = new MockEngine(_output); ITaskItem[] assemblyFiles = new TaskItem[] { new TaskItem(@"SampleWindowsRuntimeAndClr") }; // Now, pass feed resolved primary references into ResolveAssemblyReference. ResolveAssemblyReference t = new ResolveAssemblyReference(); t.BuildEngine = engine; t.Assemblies = assemblyFiles; t.SearchPaths = new String[] { @"C:\WinMD", @"C:\WinMD\v4\", @"C:\WinMD\v255\" }; bool succeeded = Execute(t); Assert.True(succeeded); Assert.Single(t.ResolvedFiles); Assert.Empty(t.ResolvedDependencyFiles); Assert.Equal(0, engine.Errors); Assert.Equal(0, engine.Warnings); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.Resolved", @"C:\WinMD\v4\mscorlib.dll"); }
public void RemapAssemblyBasic() { MockEngine e = new MockEngine(_output); ITaskItem[] items = new ITaskItem[] { new TaskItem("ReferenceVersion9"), new TaskItem("DependsOnOnlyv4Assemblies"), new TaskItem("AnotherOne") }; string redistString = "<FileList Redist='Microsoft-Windows-CLRCoreComp-Random' >" + "<File AssemblyName='mscorlib' Version='4.0.0.0' PublicKeyToken='b77a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' FileVersion='4.0.0.0' InGAC='true' />" + "<Remap>" + "<From AssemblyName='mscorlib' Version='9.0.0.0' PublicKeyToken='b77a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' FileVersion='4.0.0.0' InGAC='true'>" + " <To AssemblyName='mscorlib' Version='4.0.0.0' PublicKeyToken='b77a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' FileVersion='4.0.0.0' InGAC='true' />" + " </From>" + "<From AssemblyName='DependsOnOnlyv4Assemblies'>" + " <To AssemblyName='ReferenceVersion9' Version='9.0.0.0' PublicKeyToken='b17a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' />" + " </From>" + "<From AssemblyName='AnotherOne'>" + " <To AssemblyName='ReferenceVersion9' Version='9.0.0.0' PublicKeyToken='b17a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' />" + " </From>" + "</Remap>" + "</FileList >"; ResolveAssemblyReference t = new ResolveAssemblyReference(); ExecuteRAROnItemsAndRedist(t, e, items, redistString, false); Assert.Equal(0, e.Warnings); // "Expected NO warning in this scenario." e.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.RemappedReference", "DependsOnOnlyv4Assemblies", "ReferenceVersion9, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089"); e.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.RemappedReference", "AnotherOne", "ReferenceVersion9, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089"); Assert.Single(t.ResolvedFiles); Assert.Equal("AnotherOne", t.ResolvedFiles[0].GetMetadata("OriginalItemSpec")); Assert.Equal(Path.Combine(s_myComponentsMiscPath, "ReferenceVersion9.dll"), t.ResolvedFiles[0].ItemSpec); }
public void RemapAssemblyBasic() { MockEngine e = new MockEngine(); ITaskItem[] items = new ITaskItem[] { new TaskItem("ReferenceVersion9"), new TaskItem("DependsOnOnlyv4Assemblies"), new TaskItem("AnotherOne") }; string redistString = "<FileList Redist='Microsoft-Windows-CLRCoreComp-Random' >" + "<File AssemblyName='mscorlib' Version='4.0.0.0' PublicKeyToken='b77a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' FileVersion='4.0.0.0' InGAC='true' />" + "<Remap>" + "<From AssemblyName='mscorlib' Version='9.0.0.0' PublicKeyToken='b77a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' FileVersion='4.0.0.0' InGAC='true'>" + " <To AssemblyName='mscorlib' Version='4.0.0.0' PublicKeyToken='b77a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' FileVersion='4.0.0.0' InGAC='true' />" + " </From>" + "<From AssemblyName='DependsOnOnlyv4Assemblies'>" + " <To AssemblyName='ReferenceVersion9' Version='9.0.0.0' PublicKeyToken='b17a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' />" + " </From>" + "<From AssemblyName='AnotherOne'>" + " <To AssemblyName='ReferenceVersion9' Version='9.0.0.0' PublicKeyToken='b17a5c561934e089' Culture='neutral' ProcessorArchitecture='MSIL' />" + " </From>" + "</Remap>" + "</FileList >"; ResolveAssemblyReference t = new ResolveAssemblyReference(); ExecuteRAROnItemsAndRedist(t, e, items, redistString, false); Assert.Equal(0, e.Warnings); // "Expected NO warning in this scenario." e.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.RemappedReference", "DependsOnOnlyv4Assemblies", "ReferenceVersion9, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089"); e.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.RemappedReference", "AnotherOne", "ReferenceVersion9, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089"); Assert.Equal(1, t.ResolvedFiles.Length); Assert.True(t.ResolvedFiles[0].GetMetadata("OriginalItemSpec").Equals("AnotherOne", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedFiles[0].ItemSpec.Equals(@"c:\MyComponents\misc\ReferenceVersion9.dll", StringComparison.OrdinalIgnoreCase)); }
public void NOSDKResolved() { // Create the engine. MockEngine engine = new MockEngine(); ResolveSDKReference t = new ResolveSDKReference(); ITaskItem item = new TaskItem("GoodTestSDK, Version=2.0"); ITaskItem item2 = new TaskItem("GoodTestSDK2, Version=2.0"); t.SDKReferences = new ITaskItem[] { item, item2 }; ITaskItem installedSDK = new TaskItem("DoesNotExist"); installedSDK.SetMetadata("SDKName", "RandomSDK, Version=1.0"); t.InstalledSDKs = new ITaskItem[] { installedSDK }; t.BuildEngine = engine; bool succeeded = t.Execute(); Assert.False(succeeded); Assert.Equal(0, t.ResolvedSDKReferences.Length); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.CouldNotResolveSDK", "GoodTestSDK, Version=2.0"); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.CouldNotResolveSDK", "GoodTestSDK2, Version=2.0"); }
public void MixOfInstalledSDKItemsGoodDuplicateAndBad() { // Create the engine. MockEngine engine = new MockEngine(); ResolveSDKReference t = new ResolveSDKReference(); ITaskItem item = new TaskItem("GoodTestSDK, Version=2.0"); t.SDKReferences = new ITaskItem[] { item }; t.References = new TaskItem[0]; ITaskItem installedSDK1 = new TaskItem(@"c:\SDKDirectory\GoodTestSDK\2.0\"); installedSDK1.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); ITaskItem installedSDK2 = new TaskItem(@"c:\SDKDirectory\GoodTestSDK\2.0\"); installedSDK2.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); ITaskItem installedSDK3 = new TaskItem(String.Empty); installedSDK3.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); ITaskItem installedSDK4 = new TaskItem(@"c:\SDKDirectory\GoodTestSDK\2.0\"); installedSDK4.SetMetadata("SDKName", String.Empty); ITaskItem installedSDK5 = new TaskItem(@"c:\SDKDirectory\GoodTestSDK\2.0\"); t.InstalledSDKs = new ITaskItem[] { installedSDK1, installedSDK2, installedSDK3, installedSDK4, installedSDK5 }; t.BuildEngine = engine; bool succeeded = t.Execute(); Assert.True(succeeded); Assert.Equal(1, t.ResolvedSDKReferences.Length); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.NoFrameworkIdentitiesFound"); Assert.True(t.ResolvedSDKReferences[0].ItemSpec.Equals(@"c:\SDKDirectory\GoodTestSDK\2.0\", StringComparison.OrdinalIgnoreCase)); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("FrameworkIdentity").Length); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("AppXLocation").Length); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("SDKType").Length); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("DisplayName").Length); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("ExpandReferenceAssemblies").Equals("True", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("CopyLocalExpandedReferenceAssemblies").Equals("True", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("TargetedSDKConfiguration").Equals("Retail", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("TargetedSDKArchitecture").Equals("Neutral", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("OriginalItemSpec").Equals(item.ItemSpec, StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("SDKName").Equals("GoodTestSDK, Version=2.0", StringComparison.OrdinalIgnoreCase)); }
public void InstalledSDKEmpty() { // Create the engine. MockEngine engine = new MockEngine(); ResolveSDKReference t = new ResolveSDKReference(); ITaskItem item = new TaskItem("GoodTestSDK, Version=2.0"); t.SDKReferences = new ITaskItem[] { item }; t.References = null; t.InstalledSDKs = new ITaskItem[0]; t.BuildEngine = engine; bool succeeded = t.Execute(); Assert.True(succeeded); Assert.Equal(0, t.ResolvedSDKReferences.Length); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.NoSDKLocationsSpecified"); }
public void VerifyBuildWarningForESDKWithoutMaxPlatformVersionOnBlueOrAbove() { string testDirectoryRoot = Path.Combine(Path.GetTempPath(), "TestMaxPlatformVersionWithTargetFrameworkVersion"); string testDirectory = Path.Combine(testDirectoryRoot, "MyPlatform\\8.0\\ExtensionSDKs\\SDkWithManifest\\2.0\\"); // manifest does not contain MaxPlatformVersion string sdkManifestContents1 = @"<FileList Identity = 'GoodTestSDK, Version=2.0' DisplayName = 'GoodTestSDK' FrameworkIdentity = '' PlatformIdentity = 'windows' APPX = '' SDKType='' CopyRedistToSubDirectory='' SupportedArchitectures='' ProductFamilyName='' SupportsMultipleVersions='' ArchitectureForRuntime = '' DependsOn = '' MinOSVersion = '' MaxOSVersionTested = '' > <File WinMD = 'GoodTestSDK.Sprint, Version=8.0' /> <File AssemblyName = 'Assembly1, Version=8.0' /> <DependsOn Identity='Windows SDK, Version 8.0'/> </FileList>"; // manifest contains MaxPlatformVersion string sdkManifestContents2 = @"<FileList Identity = 'BadTestSDK, Version=1.0' DisplayName = 'BadTestSDK' FrameworkIdentity = '' PlatformIdentity = 'windows' APPX = '' SDKType='' CopyRedistToSubDirectory='' SupportedArchitectures='' ProductFamilyName='' SupportsMultipleVersions='' ArchitectureForRuntime = '' DependsOn = '' MinOSVersion = '' MaxOSVersionTested = '' MaxPlatformVersion = '8.1' > <File WinMD = 'GoodTestSDK.Sprint, Version=8.0' /> <File AssemblyName = 'Assembly1, Version=8.0' /> <DependsOn Identity='Windows SDK, Version 8.0'/> </FileList>"; try { string sdkManifestFile = Path.Combine(testDirectory, "SdkManifest.xml"); if (Directory.Exists(testDirectoryRoot)) { FileUtilities.DeleteDirectoryNoThrow(testDirectoryRoot, true); } Directory.CreateDirectory(testDirectory); ITaskItem item = new TaskItem("GoodTestSDK, Version=2.0"); ITaskItem installLocation = new TaskItem(testDirectory); installLocation.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); installLocation.SetMetadata("PlatformVersion", "8.0"); File.WriteAllText(sdkManifestFile, sdkManifestContents1); // Resolve with PlatformVersion 7.0 MockEngine engine1 = new MockEngine(); TaskLoggingHelper log1 = new TaskLoggingHelper(engine1, "ResolveSDKReference"); log1.TaskResources = AssemblyResources.PrimaryResources; ResolveSDKReference t1 = new ResolveSDKReference(); t1.SDKReferences = new ITaskItem[] { item }; t1.InstalledSDKs = new ITaskItem[] { installLocation }; t1.WarnOnMissingPlatformVersion = true; t1.BuildEngine = engine1; t1.TargetPlatformVersion = "7.0"; t1.ProjectName = "project.proj"; t1.TargetPlatformIdentifier = "windows"; bool succeeded1 = t1.Execute(); Assert.True(succeeded1); engine1.AssertLogDoesntContainMessageFromResource(_resourceDelegate, "ResolveSDKReference.MaxPlatformVersionNotSpecified", "project.proj", "GoodTestSDK", "2.0", "windows", "8.0", "windows", t1.TargetPlatformVersion); // Resolve with PlatformVersion 8.0 MockEngine engine2 = new MockEngine(); TaskLoggingHelper log2 = new TaskLoggingHelper(engine2, "ResolveSDKReference"); log2.TaskResources = AssemblyResources.PrimaryResources; ResolveSDKReference t2 = new ResolveSDKReference(); t2.SDKReferences = new ITaskItem[] { item }; t2.InstalledSDKs = new ITaskItem[] { installLocation }; t2.WarnOnMissingPlatformVersion = true; t2.BuildEngine = engine2; t2.TargetPlatformVersion = "8.0"; t2.ProjectName = "project.proj"; t2.TargetPlatformIdentifier = "windows"; bool succeeded2 = t2.Execute(); Assert.True(succeeded2); engine2.AssertLogDoesntContainMessageFromResource(_resourceDelegate, "ResolveSDKReference.MaxPlatformVersionNotSpecified", "project.proj", "GoodTestSDK", "2.0", "windows", "8.0", "windows", t2.TargetPlatformVersion); // Resolve with PlatformVersion 8.1 MockEngine engine3 = new MockEngine(); TaskLoggingHelper log3 = new TaskLoggingHelper(engine3, "ResolveSDKReference"); log3.TaskResources = AssemblyResources.PrimaryResources; ResolveSDKReference t3 = new ResolveSDKReference(); t3.SDKReferences = new ITaskItem[] { item }; t3.InstalledSDKs = new ITaskItem[] { installLocation }; t3.WarnOnMissingPlatformVersion = true; t3.BuildEngine = engine3; t3.TargetPlatformVersion = "8.1"; t3.ProjectName = "project.proj"; t3.TargetPlatformIdentifier = "windows"; bool succeeded3 = t3.Execute(); Assert.True(succeeded3); engine3.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.MaxPlatformVersionNotSpecified", "project.proj", "GoodTestSDK", "2.0", "windows", "8.0", "windows", t3.TargetPlatformVersion); // Resolve with PlatformVersion 8.1 with WarnOnMissingPlatformVersion = false MockEngine engine3a = new MockEngine(); TaskLoggingHelper log3a = new TaskLoggingHelper(engine3a, "ResolveSDKReference"); log3a.TaskResources = AssemblyResources.PrimaryResources; ResolveSDKReference t3a = new ResolveSDKReference(); t3a.SDKReferences = new ITaskItem[] { item }; t3a.InstalledSDKs = new ITaskItem[] { installLocation }; t3a.WarnOnMissingPlatformVersion = false; t3a.BuildEngine = engine3a; t3a.TargetPlatformVersion = "8.1"; t3a.ProjectName = "project.proj"; t3a.TargetPlatformIdentifier = "windows"; bool succeeded3a = t3a.Execute(); Assert.True(succeeded3a); engine3a.AssertLogDoesntContainMessageFromResource(_resourceDelegate, "ResolveSDKReference.MaxPlatformVersionNotSpecified", "project.proj", "GoodTestSDK", "2.0", "windows", "8.0", "windows", t3a.TargetPlatformVersion); FileUtilities.DeleteNoThrow(sdkManifestFile); // Manifest with MaxPlatformVersion File.WriteAllText(sdkManifestFile, sdkManifestContents2); // Resolve with PlatformVersion 8.0 MockEngine engine4 = new MockEngine(); TaskLoggingHelper log4 = new TaskLoggingHelper(engine4, "ResolveSDKReference"); log4.TaskResources = AssemblyResources.PrimaryResources; ResolveSDKReference t4 = new ResolveSDKReference(); t4.SDKReferences = new ITaskItem[] { item }; t4.InstalledSDKs = new ITaskItem[] { installLocation }; t4.WarnOnMissingPlatformVersion = true; t4.BuildEngine = engine4; t4.TargetPlatformVersion = "8.0"; t4.ProjectName = "project.proj"; t4.TargetPlatformIdentifier = "windows"; bool succeeded4 = t4.Execute(); Assert.True(succeeded4); engine4.AssertLogDoesntContainMessageFromResource(_resourceDelegate, "ResolveSDKReference.MaxPlatformVersionNotSpecified", "project.proj", "BadTestSDK", "1.0", "windows", "8.0", "windows", t4.TargetPlatformVersion); // Resolve with PlatformVersion 8.1 MockEngine engine5 = new MockEngine(); TaskLoggingHelper log5 = new TaskLoggingHelper(engine5, "ResolveSDKReference"); log5.TaskResources = AssemblyResources.PrimaryResources; ResolveSDKReference t5 = new ResolveSDKReference(); t5.SDKReferences = new ITaskItem[] { item }; t5.InstalledSDKs = new ITaskItem[] { installLocation }; t5.WarnOnMissingPlatformVersion = true; t5.BuildEngine = engine5; t5.ProjectName = "project.proj"; t5.TargetPlatformVersion = "8.1"; t5.TargetPlatformIdentifier = "windows"; bool succeeded5 = t5.Execute(); Assert.True(succeeded5); engine5.AssertLogDoesntContainMessageFromResource(_resourceDelegate, "ResolveSDKReference.MaxPlatformVersionNotSpecified", "project.proj", "BadTestSDK", "1.0", "windows", "8.0", "windows", t5.TargetPlatformVersion); } finally { if (Directory.Exists(testDirectoryRoot)) { FileUtilities.DeleteDirectoryNoThrow(testDirectoryRoot, true); } } }
public void DoNotExpandSDKsWhichAreAlsoTargetedByReferences() { // Create the engine. MockEngine engine = new MockEngine(); ResolveSDKReference t = new ResolveSDKReference(); ITaskItem item = new TaskItem("GoodTestSDK, Version=2.0"); t.SDKReferences = new ITaskItem[] { item }; TaskItem referenceItem = new TaskItem("RandomWinMD"); referenceItem.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); t.References = new TaskItem[] { referenceItem }; ITaskItem installedSDK = new TaskItem(@"c:\SDKDirectory\GoodTestSDK\2.0\"); installedSDK.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); t.InstalledSDKs = new ITaskItem[] { installedSDK }; t.BuildEngine = engine; bool succeeded = t.Execute(); Assert.True(succeeded); Assert.Equal(1, t.ResolvedSDKReferences.Length); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.NoFrameworkIdentitiesFound"); Assert.True(t.ResolvedSDKReferences[0].ItemSpec.Equals(@"c:\SDKDirectory\GoodTestSDK\2.0\", StringComparison.OrdinalIgnoreCase)); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("FrameworkIdentity").Length); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("AppXLocation").Length); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("SimpleName").Equals("GoodTestSDK", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("Version").Equals("2.0", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("ExpandReferenceAssemblies").Equals("False", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("CopyLocalExpandedReferenceAssemblies").Equals("False", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("TargetedSDKConfiguration").Equals("Retail", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("TargetedSDKArchitecture").Equals("Neutral", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("OriginalItemSpec").Equals(item.ItemSpec, StringComparison.OrdinalIgnoreCase)); // Make sure that if the SDKName does not match the sdk being resolved then it should have no effect. // Create the engine. engine = new MockEngine(); t = new ResolveSDKReference(); item = new TaskItem("GoodTestSDK, Version=2.0"); t.SDKReferences = new ITaskItem[] { item }; referenceItem = new TaskItem("RandomWinMD"); referenceItem.SetMetadata("SDKName", "DifferentSDK, Version=2.0"); t.References = new TaskItem[] { referenceItem }; installedSDK = new TaskItem(@"c:\SDKDirectory\GoodTestSDK\2.0\"); installedSDK.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); t.InstalledSDKs = new ITaskItem[] { installedSDK }; t.BuildEngine = engine; succeeded = t.Execute(); Assert.True(succeeded); Assert.Equal(1, t.ResolvedSDKReferences.Length); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.NoFrameworkIdentitiesFound"); Assert.True(t.ResolvedSDKReferences[0].ItemSpec.Equals(@"c:\SDKDirectory\GoodTestSDK\2.0\", StringComparison.OrdinalIgnoreCase)); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("FrameworkIdentity").Length); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("AppXLocation").Length); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("ExpandReferenceAssemblies").Equals("True", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("CopyLocalExpandedReferenceAssemblies").Equals("True", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("TargetedSDKConfiguration").Equals("Retail", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("TargetedSDKArchitecture").Equals("Neutral", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("OriginalItemSpec").Equals(item.ItemSpec, StringComparison.OrdinalIgnoreCase)); }
public void VerifyReferencesLoggedX64() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x64"); item.SetMetadata("DisplayName", "SDKWithManifestDisplayName"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.References.Length == 8); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[0].ItemSpec.Replace(t.References[0].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[1].ItemSpec.Replace(t.References[1].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[2].ItemSpec.Replace(t.References[2].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[3].ItemSpec.Replace(t.References[3].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[4].ItemSpec.Replace(t.References[4].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[5].ItemSpec.Replace(t.References[5].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[6].ItemSpec.Replace(t.References[6].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[7].ItemSpec.Replace(t.References[7].GetMetadata("SDKRootPath"), String.Empty)); Assert.IsTrue(t.References[0].ItemSpec.IndexOf("x64", StringComparison.OrdinalIgnoreCase) > -1); Assert.IsTrue(Path.GetFileName(t.References[0].ItemSpec).Equals("A.winmd", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("WinMDFile").Equals("true", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("ReferenceGrouping").Equals("SDKWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("WinMDFileType").Equals("Managed", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("ReferenceGroupingDisplayName").Equals("SDKWithManifestDisplayName", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("CopyLocal").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(Path.GetFileName(t.References[4].ItemSpec).Equals("E.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("WinMDFile").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("WinMDFileType").Length == 0); Assert.IsTrue(t.References[4].GetMetadata("CopyLocal").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); }
public void ConflictsBetweenSameSDKName() { string testDirectoryRoot = Path.Combine(Path.GetTempPath(), "ConflictsBetweenSameSDKName"); string testDirectory = Path.Combine(testDirectoryRoot, "GoodTestSDK\\1.0\\"); string testDirectory2 = Path.Combine(testDirectoryRoot, "GoodTestSDK\\2.0\\"); string testDirectory3 = Path.Combine(testDirectoryRoot, "GoodTestSDK\\3.0\\"); string sdkManifestContents1 = @"<FileList Identity = 'GoodTestSDK, Version=1.0' DisplayName = 'GoodTestSDK 1.0' ProductFamilyName = 'MyFamily' SupportsMultipleVersions='Warning'> </FileList>"; string sdkManifestContents2 = @"<FileList Identity = 'GoodTestSDK, Version=2.0' DisplayName = 'GoodTestSDK 2.0' ProductFamilyName = 'MyFamily2' SupportsMultipleVersions='Error'> </FileList>"; string sdkManifestContents3 = @"<FileList Identity = 'GoodTestSDK, Version=3.0' DisplayName = 'GoodTestSDK 3.0' ProductFamilyName = 'MyFamily3' SupportsMultipleVersions='Allow'> </FileList>"; try { string sdkManifestFile = Path.Combine(testDirectory, "SdkManifest.xml"); string sdkManifestFile2 = Path.Combine(testDirectory2, "SdkManifest.xml"); string sdkManifestFile3 = Path.Combine(testDirectory3, "SdkManifest.xml"); if (Directory.Exists(testDirectoryRoot)) { FileUtilities.DeleteDirectoryNoThrow(testDirectoryRoot, true); } Directory.CreateDirectory(testDirectory); Directory.CreateDirectory(testDirectory2); Directory.CreateDirectory(testDirectory3); File.WriteAllText(sdkManifestFile, sdkManifestContents1); File.WriteAllText(sdkManifestFile2, sdkManifestContents2); File.WriteAllText(sdkManifestFile3, sdkManifestContents3); // Create the engine. MockEngine engine = new MockEngine(); ResolveSDKReference t = new ResolveSDKReference(); ITaskItem item = new TaskItem("GoodTestSDK, Version=1.0"); ITaskItem item2 = new TaskItem("GoodTestSDK, Version=2.0"); ITaskItem item3 = new TaskItem("GoodTestSDK, Version=3.0"); t.SDKReferences = new ITaskItem[] { item, item2, item3 }; t.TargetedSDKArchitecture = "x86"; t.TargetedSDKConfiguration = "Release"; ITaskItem installLocation = new TaskItem(testDirectory); installLocation.SetMetadata("SDKName", "GoodTestSDK, Version=1.0"); ITaskItem installLocation2 = new TaskItem(testDirectory2); installLocation2.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); ITaskItem installLocation3 = new TaskItem(testDirectory3); installLocation3.SetMetadata("SDKName", "GoodTestSDK, Version=3.0"); t.InstalledSDKs = new ITaskItem[] { installLocation, installLocation2, installLocation3 }; t.BuildEngine = engine; bool succeeded = t.Execute(); Assert.False(succeeded); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.CannotReferenceTwoSDKsSameName", "GoodTestSDK, Version=1.0", "\"GoodTestSDK, Version=2.0\", \"GoodTestSDK, Version=3.0\""); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.CannotReferenceTwoSDKsSameName", "GoodTestSDK, Version=2.0", "\"GoodTestSDK, Version=1.0\", \"GoodTestSDK, Version=3.0\""); Assert.Equal(1, engine.Warnings); Assert.Equal(1, engine.Errors); Assert.True(t.ResolvedSDKReferences[0].ItemSpec.Equals(testDirectory, StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[1].ItemSpec.Equals(testDirectory2, StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[2].ItemSpec.Equals(testDirectory3, StringComparison.OrdinalIgnoreCase)); } finally { if (Directory.Exists(testDirectoryRoot)) { FileUtilities.DeleteDirectoryNoThrow(testDirectoryRoot, true); } } }
public void ConflictBetweenCopyLocalDependenciesRegress444809UnResolvedPrimaryReference() { ResolveAssemblyReference t = new ResolveAssemblyReference(); MockEngine engine = new MockEngine(); t.BuildEngine = engine; t.Assemblies = new ITaskItem[] { new TaskItem("A, Version=20.0.0.0, Culture=Neutral, PublicKeyToken=null"), new TaskItem("B, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=null"), new TaskItem("D, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=null") }; t.SearchPaths = new string[] { @"c:\Regress444809", @"c:\Regress444809\v2" }; t.TargetFrameworkDirectories = new string[] { @"c:\WINNT\Microsoft.NET\Framework\v2.0.MyVersion" }; bool result = Execute(t); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.ReferenceDependsOn", "A, Version=20.0.0.0, Culture=Neutral, PublicKeyToken=null", String.Empty); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.ReferenceDependsOn", "A, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=null", @"c:\Regress444809\v2\A.dll"); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.UnResolvedPrimaryItemSpec", "A, Version=20.0.0.0, Culture=Neutral, PublicKeyToken=null"); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.PrimarySourceItemsForReference", @"c:\Regress444809\D.dll"); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.PrimarySourceItemsForReference", @"c:\Regress444809\B.dll"); }
public void ConflictBetweenCopyLocalDependenciesRegress444809() { ResolveAssemblyReference t = new ResolveAssemblyReference(); MockEngine engine = new MockEngine(); t.BuildEngine = engine; t.Assemblies = new ITaskItem[] { new TaskItem("A, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=null"), new TaskItem("C, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=null") }; t.SearchPaths = new string[] { @"c:\Regress444809", @"c:\Regress444809\v2" }; t.TargetFrameworkDirectories = new string[] { @"c:\WINNT\Microsoft.NET\Framework\v2.0.MyVersion" }; bool result = Execute(t); ResourceManager resources = new ResourceManager("Microsoft.Build.Tasks.Strings", Assembly.GetExecutingAssembly()); //Unresolved primary reference with itemspec "A, Version=20.0.0.0, Culture=Neutral, PublicKeyToken=null". engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.ReferenceDependsOn", "A, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=null", @"c:\Regress444809\A.dll"); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.ReferenceDependsOn", "A, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=null", @"c:\Regress444809\v2\A.dll"); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.PrimarySourceItemsForReference", @"c:\Regress444809\C.dll"); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.PrimarySourceItemsForReference", @"c:\Regress444809\B.dll"); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.PrimarySourceItemsForReference", @"c:\Regress444809\v2\a.dll"); }
public void VerifyProcessArchitectureMismatchError() { ResolveAssemblyReference t = new ResolveAssemblyReference(); MockEngine mockEngine = new MockEngine(); t.BuildEngine = mockEngine; t.Assemblies = new ITaskItem[] { new TaskItem("A"), new TaskItem("B") }; t.SearchPaths = new string[] { @"{Registry:Software\Regress714052,v2.0.0,X86}" }; t.TargetProcessorArchitecture = "MSIL"; t.WarnOrErrorOnTargetArchitectureMismatch = "Error"; Execute(t); Assert.Equal(2, t.ResolvedFiles.Length); Assert.Equal(0, mockEngine.Warnings); Assert.Equal(2, mockEngine.Errors); mockEngine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.MismatchBetweenTargetedAndReferencedArch", "MSIL", @"A", "X86"); mockEngine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.MismatchBetweenTargetedAndReferencedArch", "MSIL", @"B", "X86"); AssertNoCase(@"{Registry:Software\Regress714052,v2.0.0,X86}", t.ResolvedFiles[0].GetMetadata("ResolvedFrom")); }
public void LogNoWarningForRedistConflictWithinSDK() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "false"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("CopyRedist", "true"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.RedistFiles.Length == 5); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.ConflictRedistSameSDK", "A.dll", "SDKWithManifest, Version=2.0", "Redist\\Retail\\X86\\A.dll", "Redist\\CommonConfiguration\\Neutral\\A.dll"); Assert.AreEqual(0, engine.Warnings); }
public void VerifyRedistFilesLogRedistTrueAmd64() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "amd64"); item.SetMetadata("CopyRedist", "true"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.RedistFiles.Length == 5); Assert.IsTrue(t.RedistFiles[0].ItemSpec.IndexOf("x64", StringComparison.OrdinalIgnoreCase) > -1); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[0].ItemSpec.Replace(t.RedistFiles[0].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[0].GetMetadata("TargetPath")); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[1].ItemSpec.Replace(t.RedistFiles[1].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[1].GetMetadata("TargetPath")); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[2].ItemSpec.Replace(t.RedistFiles[2].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[2].GetMetadata("TargetPath")); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[3].ItemSpec.Replace(t.RedistFiles[3].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[3].GetMetadata("TargetPath")); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[4].ItemSpec.Replace(t.RedistFiles[4].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[4].GetMetadata("TargetPath")); }
public void MixOfResolvedAndUnResolved() { // Create the engine. MockEngine engine = new MockEngine(); ResolveSDKReference t = new ResolveSDKReference(); ITaskItem item = new TaskItem("GoodTestSDK, Version=2.0"); ITaskItem item2 = new TaskItem("RandomSDK, Version=2.0"); t.SDKReferences = new ITaskItem[] { item, item2 }; ITaskItem installedSDK = new TaskItem(@"c:\SDKDirectory\GoodTestSDK\2.0\"); installedSDK.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); t.InstalledSDKs = new ITaskItem[] { installedSDK }; t.BuildEngine = engine; t.LogResolutionErrorsAsWarnings = true; bool succeeded = t.Execute(); Assert.True(succeeded); Assert.Equal(1, t.ResolvedSDKReferences.Length); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.NoFrameworkIdentitiesFound"); Assert.True(t.ResolvedSDKReferences[0].ItemSpec.Equals(@"c:\SDKDirectory\GoodTestSDK\2.0\", StringComparison.OrdinalIgnoreCase)); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.FoundSDK", @"c:\SDKDirectory\GoodTestSDK\2.0\"); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.CouldNotResolveSDK", "RandomSDK, Version=2.0"); }
public void TestMaxPlatformVersionWithTargetFrameworkVersion() { string testDirectoryRoot = Path.Combine(Path.GetTempPath(), "TestMaxPlatformVersionWithTargetFrameworkVersion"); string testDirectory = Path.Combine(testDirectoryRoot, "GoodTestSDK\\2.0\\"); string sdkManifestContents1 = @"<FileList Identity = 'GoodTestSDK, Version=2.0' DisplayName = 'GoodTestSDK' FrameworkIdentity = '' PlatformIdentity = 'Windows' APPX = '' SDKType='' CopyRedistToSubDirectory='' SupportedArchitectures='' ProductFamilyName='' SupportsMultipleVersions='' ArchitectureForRuntime = '' DependsOn = '' MaxPlatformVersion = '6.0' MinOSVersion = '' MaxOSVersionTested = '' MoreInfo='ESDK information' > <File WinMD = 'GoodTestSDK.Sprint, Version=8.0' /> <File AssemblyName = 'Assembly1, Version=8.0' /> <DependsOn Identity='Windows SDK, Version 8.0'/> </FileList>"; string sdkManifestContents2 = @"<FileList Identity = 'GoodTestSDK, Version=2.0' DisplayName = 'GoodTestSDK' FrameworkIdentity = 'Windows' PlatformIdentity = '' APPX = '' SDKType='' CopyRedistToSubDirectory='' SupportedArchitectures='' ProductFamilyName='' SupportsMultipleVersions='' ArchitectureForRuntime = '' DependsOn = '' MaxPlatformVersion = '8.0' MinOSVersion = '' MaxOSVersionTested = '' MoreInfo='ESDK information' > <File WinMD = 'GoodTestSDK.Sprint, Version=8.0' /> <File AssemblyName = 'Assembly1, Version=8.0' /> <DependsOn Identity='Windows SDK, Version 8.0'/> </FileList>"; try { string sdkManifestFile = Path.Combine(testDirectory, "SdkManifest.xml"); if (Directory.Exists(testDirectoryRoot)) { FileUtilities.DeleteDirectoryNoThrow(testDirectoryRoot, true); } Directory.CreateDirectory(testDirectory); ITaskItem item = new TaskItem("GoodTestSDK, Version=2.0"); ITaskItem installLocation = new TaskItem(testDirectory); installLocation.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); // In the test below the SDK MaxPlatformVersion is smaller than the TargetPlatformVersion - the build fails File.WriteAllText(sdkManifestFile, sdkManifestContents1); MockEngine engine1 = new MockEngine(); ResolveSDKReference t1 = new ResolveSDKReference(); t1.SDKReferences = new ITaskItem[] { item }; t1.InstalledSDKs = new ITaskItem[] { installLocation }; t1.TargetPlatformIdentifier = "Windows"; t1.ProjectName = "myproject.csproj"; t1.BuildEngine = engine1; bool succeeded1 = t1.Execute(); Assert.True(succeeded1); engine1.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.MaxPlatformVersionLessThanTargetPlatformVersion", "myproject.csproj", "GoodTestSDK", "2.0", "Windows", "6.0", "Windows", "7.0"); // In the test below the SDK MaxPlatformVersion is greater than the TargetPlatformVersion - the build succeeds File.WriteAllText(sdkManifestFile, sdkManifestContents2); MockEngine engine2 = new MockEngine(); ResolveSDKReference t2 = new ResolveSDKReference(); t2.SDKReferences = new ITaskItem[] { item }; t2.InstalledSDKs = new ITaskItem[] { installLocation }; t1.TargetPlatformIdentifier = "Windows"; t1.ProjectName = "myproject.csproj"; t2.BuildEngine = engine1; bool succeeded2 = t2.Execute(); Assert.True(succeeded2); engine2.AssertLogDoesntContainMessageFromResource(_resourceDelegate, "ResolveSDKReference.MaxPlatformVersionLessThanTargetPlatformVersion", "myproject.csproj", "GoodTestSDK", "2.0", "Windows", "6.0", "Windows", "7.0"); } finally { if (Directory.Exists(testDirectoryRoot)) { FileUtilities.DeleteDirectoryNoThrow(testDirectoryRoot, true); } } }
public void LogReferenceAndRedistConflictBetweenSdksNowarning() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("CopyRedist", "true"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); ITaskItem item2 = new TaskItem(s_sdkDirectory2); item2.SetMetadata("ExpandReferenceAssemblies", "true"); item2.SetMetadata("TargetedSDKConfiguration", "Retail"); item2.SetMetadata("TargetedSDKArchitecture", "x86"); item2.SetMetadata("CopyRedist", "true"); item2.SetMetadata("OriginalItemSpec", "AnotherSDK, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item, item2 }; t.LogReferencesList = false; t.LogReferenceConflictBetweenSDKsAsWarning = false; t.LogRedistConflictBetweenSDKsAsWarning = false; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.References.Length == 8); Assert.IsTrue(t.RedistFiles.Length == 6); Assert.IsTrue(engine.Warnings == 0); string redistWinner = Path.Combine(s_sdkDirectory, "Redist\\Retail\\Neutral\\B.pri"); string redistVictim = Path.Combine(s_sdkDirectory2, "Redist\\Retail\\X86\\B.pri"); string referenceWinner = Path.Combine(s_sdkDirectory, "References\\Retail\\Neutral\\B.WinMD"); string referenceVictim = Path.Combine(s_sdkDirectory2, "References\\Retail\\X86\\B.WinMD"); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.ConflictRedistDifferentSDK", "B.PRI", "SDKWithManifest, Version=2.0", "AnotherSDK, Version=2.0", redistWinner, redistVictim); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.ConflictReferenceDifferentSDK", "SDKWithManifest, Version=2.0", "AnotherSDK, Version=2.0", referenceWinner, referenceVictim); }
public void VerifyDependencyWarningFromMetadata() { // Create the engine. MockEngine engine = new MockEngine(); ResolveSDKReference t = new ResolveSDKReference(); ITaskItem item = new TaskItem("GoodTestSDK, Version=2.0"); item.SetMetadata("DependsOn", "NotHere, Version=1.0"); t.SDKReferences = new ITaskItem[] { item }; t.References = null; ITaskItem installedSDK = new TaskItem(@"c:\SDKDirectory\GoodTestSDK\2.0\"); installedSDK.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); t.InstalledSDKs = new ITaskItem[] { installedSDK }; t.BuildEngine = engine; bool succeeded = t.Execute(); Assert.True(succeeded); Assert.Equal(1, t.ResolvedSDKReferences.Length); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.NoFrameworkIdentitiesFound"); Assert.True(t.ResolvedSDKReferences[0].ItemSpec.Equals(@"c:\SDKDirectory\GoodTestSDK\2.0\", StringComparison.OrdinalIgnoreCase)); string warning = ResourceUtilities.FormatResourceString("ResolveSDKReference.SDKMissingDependency", "GoodTestSDK, Version=2.0", "\"NotHere, Version=1.0\""); engine.AssertLogContains(warning); }
public void LogErrorWhenNoArchitecture() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Debug"); item.SetMetadata("TargetedSDKArchitecture", ""); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsFalse(success); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.CannotHaveEmptyTargetArchitecture", s_sdkDirectory); }
public void ResolveFromNonFrameworkPassInConfigAndArchOverrideByMetadata() { // Create the engine. MockEngine engine = new MockEngine(); ResolveSDKReference t = new ResolveSDKReference(); ITaskItem item = new TaskItem("GoodTestSDK, Version=2.0"); item.SetMetadata("TargetedSDKConfiguration", "Release"); item.SetMetadata("TargetedSDKArchitecture", "AnyCPU"); t.SDKReferences = new ITaskItem[] { item }; t.References = null; ITaskItem installedSDK = new TaskItem(@"c:\SDKDirectory\GoodTestSDK\2.0\"); installedSDK.SetMetadata("SDKName", "GoodTestSDK, Version=2.0"); t.InstalledSDKs = new ITaskItem[] { installedSDK }; t.TargetedSDKConfiguration = "Debug"; t.TargetedSDKConfiguration = "x86"; t.BuildEngine = engine; bool succeeded = t.Execute(); Assert.True(succeeded); Assert.Equal(1, t.ResolvedSDKReferences.Length); engine.AssertLogContainsMessageFromResource(_resourceDelegate, "ResolveSDKReference.NoFrameworkIdentitiesFound"); Assert.True(t.ResolvedSDKReferences[0].ItemSpec.Equals(@"c:\SDKDirectory\GoodTestSDK\2.0\", StringComparison.OrdinalIgnoreCase)); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("FrameworkIdentity").Length); Assert.Equal(0, t.ResolvedSDKReferences[0].GetMetadata("AppXLocation").Length); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("ExpandReferenceAssemblies").Equals("True", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("CopyLocalExpandedReferenceAssemblies").Equals("True", StringComparison.OrdinalIgnoreCase)); // Expect retail if release is passed in Assert.True(t.ResolvedSDKReferences[0].GetMetadata("TargetedSDKConfiguration").Equals("Retail", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("TargetedSDKArchitecture").Equals("Neutral", StringComparison.OrdinalIgnoreCase)); Assert.True(t.ResolvedSDKReferences[0].GetMetadata("OriginalItemSpec").Equals(item.ItemSpec, StringComparison.OrdinalIgnoreCase)); }
public void MixedWinMDGoodReferenceToMscorlib() { // Create the engine. MockEngine engine = new MockEngine(); ITaskItem[] assemblyFiles = new TaskItem[] { new TaskItem(@"SampleWindowsRuntimeAndClr") }; // Now, pass feed resolved primary references into ResolveAssemblyReference. ResolveAssemblyReference t = new ResolveAssemblyReference(); t.BuildEngine = engine; t.Assemblies = assemblyFiles; t.SearchPaths = new String[] { @"C:\WinMD", @"C:\WinMD\v4\", @"C:\WinMD\v255\" }; bool succeeded = Execute(t); Assert.True(succeeded); Assert.Equal(1, t.ResolvedFiles.Length); Assert.Equal(0, t.ResolvedDependencyFiles.Length); Assert.Equal(0, engine.Errors); Assert.Equal(0, engine.Warnings); engine.AssertLogContainsMessageFromResource(resourceDelegate, "ResolveAssemblyReference.Resolved", @"C:\WinMD\v4\mscorlib.dll"); }