Beispiel #1
0
 public void CopyMetadataTo(MSBuildFramework.ITaskItem destinationItem)
 {
     foreach (var keyPair in this.metadata.ToArray())
     {
         destinationItem.SetMetadata(keyPair.Key, keyPair.Value);
     }
 }
        public void ApplyBaselineToUntrackedDependency()
        {
            ITaskItem[] baseLine = new[]
            {
                CreateItem("System.Runtime", "4.0.21")
            };

            ITaskItem[] dependencies = new[]
            {
                CreateItem("System.Banana", "4.0.0")
            };

            ApplyBaseLine task = new ApplyBaseLine()
            {
                BuildEngine = _engine,
                BaseLinePackages = baseLine,
                OriginalDependencies = dependencies
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);
            Assert.Equal(task.OriginalDependencies.Length, task.BaseLinedDependencies.Length);
            Assert.Equal("System.Banana", task.BaseLinedDependencies[0].ItemSpec);
            Assert.Equal("4.0.0", task.BaseLinedDependencies[0].GetMetadata("Version"));
        }
Beispiel #3
0
 public static ITaskInteraction Create(
     MSBuildFramework.IBuildEngine buildEngine,
     ITaskOutputHandler outputHandler,
     ITask task,
     IArgumentProvider arguments,
     ITypedServiceProvider services)
 {
     return new BuildTaskInteraction(task, arguments, outputHandler, buildEngine, services);
 }
Beispiel #4
0
 private BuildTaskInteraction(
     ITask task,
     IArgumentProvider arguments,
     ITaskOutputHandler outputHandler,
     MSBuildFramework.IBuildEngine buildEngine,
     ITypedServiceProvider services)
     : base (arguments, services)
 {
     this.outputHandler = outputHandler;
     this.loggers = new Lazy<BuildTaskLoggers>(() => new BuildTaskLoggers(buildEngine, task, arguments));
 }
        public void NoAdditionalDependenciesForPlaceholders()
        {
            ITaskItem[] files = new[]
            {
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoAndroid10", "MonoAndroid10"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoTouch10", "MonoTouch10"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/net45", "net45"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/win8", "win8"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/wp8", "wp8"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/wpa81", "wpa81"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinios10", "xamarinios10"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinmac20", "xamarinmac20"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\System.Collections.Immutable.dll", "lib/netstandard1.0", "netstandard1.0"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\Open\CoreFx\Windows_NT.x86.Release\System.Collections.Immutable\System.Collections.Immutable.xml", "lib/netstandard1.0", "netstandard1.0"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\Open\CoreFx\Windows_NT.x86.Release\System.Collections.Immutable\System.Collections.Immutable.xml", "lib/portable-net45+win8+wp8+wpa81", "portable-net45+win8+wp8+wpa81"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\System.Collections.Immutable.dll", "lib/portable-net45+win8+wp8+wpa81", "portable-net45+win8+wp8+wpa81"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/MonoAndroid10", "MonoAndroid10"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/MonoTouch10", "MonoTouch10"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/net45", "net45"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/win8", "win8"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/wp8", "wp8"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/wpa81", "wpa81"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/xamarinios10", "xamarinios10"),
                CreateFileItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/xamarinmac20", "xamarinmac20")
            };
            ITaskItem[] dependencies = new[]
            {
                CreateDependencyItem(@"System.Runtime", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Resources.ResourceManager", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Collections", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Diagnostics.Debug", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Linq", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Runtime.Extensions", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Globalization", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Threading", "4.0.0", "netstandard1.0")
            };
            string frameworkListsPath = "FrameworkLists";

            CreateTrimDependencyGroups task = new CreateTrimDependencyGroups()
            {
                BuildEngine = _engine,
                Files = files,
                Dependencies = dependencies,
                FrameworkListsPath = frameworkListsPath
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);

            // Assert that we're not adding any new trimmed inbox dependencies, we have placeholders for all inbox frameworks.
            Assert.Equal(0, task.TrimmedDependencies.Length);
        }
        public void ApplyBaselineToUnversionedDependency()
        {
            ITaskItem[] dependencies = new[]
            {
                CreateItem("System.Runtime", null)
            };

            ApplyBaseLine task = new ApplyBaseLine()
            {
                BuildEngine = _engine,
                Apply = true,
                PackageIndexes = _packageIndexes,
                OriginalDependencies = dependencies
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);
            Assert.Equal(task.OriginalDependencies.Length, task.BaseLinedDependencies.Length);
            Assert.Equal("System.Runtime", task.BaseLinedDependencies[0].ItemSpec);
            Assert.Equal("4.0.21", task.BaseLinedDependencies[0].GetMetadata("Version"));
        }
        public void OOBFxRuntimePackageExplicitNotSupported()
        {
            ITaskItem[] files = new[]
            {
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "runtimes/win7/lib/win8", "win8"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "runtimes/win7/lib/wp8", "wp8"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "runtimes/win7/lib/wpa81", "wpa81"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "runtimes/win7/lib/netcore50", "netcore50"),
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Libraries\System.Diagnostics.FileVersionInfo.dll", "runtimes/win7/lib/netstandard1.3", "netstandard1.3"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/netstandard", "netstandard")
            };

            ITaskItem[] oobFx = new[] { new TaskItem("netcore50") };

            EnsureOOBFramework task = new EnsureOOBFramework()
            {
                BuildEngine = _engine,
                Files = files,
                OOBFrameworks = oobFx,
                RuntimeJson = "runtime.json",
                RuntimeId = "win7"
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);
            Assert.Equal(0, task.AdditionalFiles.Length);
        }
        public void NoPlaceholders()
        {
            ITaskItem[] files = new[]
            {
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\System.Collections.Immutable.dll", "lib/netstandard1.0", "netstandard1.0"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\Open\CoreFx\Windows_NT.x86.Release\System.Collections.Immutable\System.Collections.Immutable.xml", "lib/netstandard1.0", "netstandard1.0"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\Open\CoreFx\Windows_NT.x86.Release\System.Collections.Immutable\System.Collections.Immutable.xml", "lib/portable-net45+win8+wp8+wpa81", "portable-net45+win8+wp8+wpa81"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\System.Collections.Immutable.dll", "lib/portable-net45+win8+wp8+wpa81", "portable-net45+win8+wp8+wpa81"),
            };
            ITaskItem[] dependencies = new[]
            {
                CreateDependencyItem(@"System.Runtime", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Resources.ResourceManager", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Collections", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Diagnostics.Debug", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Linq", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Runtime.Extensions", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Globalization", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Threading", "4.0.0", "netstandard1.0")
            };
            string frameworkListsPath = "FrameworkLists";

            CreateTrimDependencyGroups task = new CreateTrimDependencyGroups()
            {
                BuildEngine = _engine,
                Files = files,
                Dependencies = dependencies,
                FrameworkListsPath = frameworkListsPath
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);

            // Assert that we're adding dependency groups for all 7 inbox tfm's we support
            Assert.Equal(8, task.TrimmedDependencies.Length);
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Contains("win8")).Count());
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Contains("monoandroid1")).Count());
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Contains("monotouch1")).Count());
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Contains("net45")).Count());
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Contains("wp8")).Count());
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Contains("wpa81")).Count());
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Contains("xamarinios1")).Count());
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Contains("xamarinmac2")).Count());
            // Assert these are empty dependencygroups.
            Assert.All(task.TrimmedDependencies, f => f.ToString().Equals("_._"));
        }
        public void AddInboxFrameworkGroupsAndDependencies()
        {
            ITaskItem[] files = new[]
            {
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\System.Reflection.Metadata.dll", "lib/netstandard1.1", "netstandard1.1"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\Open\CoreFx\Windows_NT.x86.Release\System.Reflection.Metadata\System.Reflection.Metadata.xml", "lib/netstandard1.1", "netstandard1.1"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\Open\CoreFx\Windows_NT.x86.Release\System.Reflection.Metadata\System.Reflection.Metadata.xml", "lib/portable-net45+win8", "portable-net45+win8"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\System.Reflection.Metadata.dll", "lib/portable-net45+win8", "portable-net45+win8"),
            };
            ITaskItem[] dependencies = new[]
            {
                CreateDependencyItem(@"System.Runtime", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Resources.ResourceManager", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Reflection.Primitives", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.IO", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Collections", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Diagnostics.Debug", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Text.Encoding", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Runtime.InteropServices", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Reflection", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Runtime.Extensions", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Threading", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Text.Encoding.Extensions", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Reflection.Extensions", "4.0.0", "netstandard1.1"),
                CreateDependencyItem(@"System.Collections.Immutable", "1.1.37", "netstandard1.1"),
                CreateDependencyItem(@"System.Collections.Immutable", "1.1.37", "portable-net45+win80")
            };
            string frameworkListsPath = "FrameworkLists";

            CreateTrimDependencyGroups task = new CreateTrimDependencyGroups()
            {
                BuildEngine = _engine,
                Files = files,
                Dependencies = dependencies,
                FrameworkListsPath = frameworkListsPath
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);
            IEnumerable<string> tmp = task.TrimmedDependencies.Select(f => f.GetMetadata("TargetFramework"));

            // Assert that we're creating new dependency groups
            Assert.Equal(7, task.TrimmedDependencies.Length);

            // System.Collections.Immutable is not inbox
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Equals("monoandroid10")).Count());

            // The only added dependency in wpa81 is System.Collections.Immutable
            Assert.Equal("System.Collections.Immutable", task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Equals("wpa81")).First().ItemSpec);
        }
        public void NotSupported()
        {
            ITaskItem[] files = new[]
            {
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\dnxcore\System.Threading.AccessControl.dll", "lib/DNXCore50", "dnxcore50"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\net\System.Threading.AccessControl.dll", "lib/net46", "net46"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\Contracts\System.Threading.AccessControl\4.0.0.0\System.Threading.AccessControl.dll", "ref/netstandard1.3", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1033\System.Threading.AccessControl.xml", "ref/netstandard1.3", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1028\System.Threading.AccessControl.xml", "ref/netstandard1.3/zh-hant", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1031\System.Threading.AccessControl.xml", "ref/netstandard1.3/de", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1036\System.Threading.AccessControl.xml", "ref/netstandard1.3/fr", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1040\System.Threading.AccessControl.xml", "ref/netstandard1.3/it", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1041\System.Threading.AccessControl.xml", "ref/netstandard1.3/ja", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1042\System.Threading.AccessControl.xml", "ref/netstandard1.3/ko", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1049\System.Threading.AccessControl.xml", "ref/netstandard1.3/ru", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\2052\System.Threading.AccessControl.xml", "ref/netstandard1.3/zh-hans", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\3082\System.Threading.AccessControl.xml", "ref/netstandard1.3/es", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\net\System.Threading.AccessControl.dll", "ref/net46", "netstandard1.3")
            };
            ITaskItem[] dependencies = new[]
            {
                CreateDependencyItem(@"System.Runtime", "4.0.20", "dnxcore50"),
                CreateDependencyItem(@"System.Resources.ResourceManager", "4.0.0", "dnxcore50"),
                CreateDependencyItem(@"System.Security.AccessControl", "4.0.0-rc2-23516", "dnxcore50"),
                CreateDependencyItem(@"System.Security.Principal.Windows", "4.0.0-rc2-23516", "dnxcore50"),
                CreateDependencyItem(@"System.Runtime.Handles", "4.0.0", "dnxcore50"),
                CreateDependencyItem(@"System.Threading", "4.0.10", "dnxcore50")
            };
            string frameworkListsPath = "FrameworkLists";

            CreateTrimDependencyGroups task = new CreateTrimDependencyGroups()
            {
                BuildEngine = _engine,
                Files = files,
                Dependencies = dependencies,
                FrameworkListsPath = frameworkListsPath
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);

            // Assert that we're not adding any new trimmed inbox dependencies, for unsupported inbox frameworks.
            Assert.Equal(0, task.TrimmedDependencies.Length);
        }
        public void MultiGeneration()
        {
            ITaskItem[] files = new[]
            {
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\System.ComponentModel.dll", "lib/netstandard1.3", "netstandard1.3"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "lib/MonoAndroid10", "MonoAndroid10"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "lib/MonoTouch10", "MonoTouch10"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\net45.dll", "lib/net45", "net45"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "lib/win8", "win8"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "lib/wp80", "wp80"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "lib/wpa81", "wpa81"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "lib/xamarinios10", "xamarinios10"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "lib/xamarinmac20", "xamarinmac20"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\NETCore\Libraries\System.ComponentModel.dll", "lib/netcore50/System.ComponentModel.dll", "netcore50"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\Contracts\System.ComponentModel\4.0.1.0\System.ComponentModel.dll", "lib/ref/netstandard1.0", "netstandard1.0"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "ref/MonoAndroid10", "MonoAndroid10"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "ref/MonoTouch10", "MonoTouch10"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\net45.dll", "ref/net45", "net45"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "ref/win8", "win8"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "ref/wp80", "wp80"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "ref/wpa81", "wpa81"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "ref/xamarinios10", "xamarinios10"),
                CreateFileItem(@"E:\ProjectK\src\NDP\FxCore\src\Packages\_._", "ref/xamarinmac20", "xamarinmac20"),
                CreateFileItem(@"E:\ProjectK\binaries\x86ret\Contracts\System.ComponentModel\4.0.1.0\System.ComponentModel.dll", "ref/netcore50/System.ComponentModel.dll", "netcore50")
            };
            ITaskItem[] dependencies = new[]
            {
                CreateDependencyItem(@"System.Runtime", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Runtime", "4.0.20", "netstandard1.3"),
                // Make up some dependencies which are not inbox on net45, net451, net46
                CreateDependencyItem(@"System.Collections.Immutable", "4.0.0", "netstandard1.0"),
                CreateDependencyItem(@"System.Collections.Immutable", "4.0.20", "netstandard1.2"),
                CreateDependencyItem(@"System.Collections.Immutable", "4.0.20", "netstandard1.3"),
                CreateDependencyItem(@"System.Runtime", "4.0.20", ".NETCore50")
            };
            string frameworkListsPath = "FrameworkLists";

            CreateTrimDependencyGroups task = new CreateTrimDependencyGroups()
            {
                BuildEngine = _engine,
                Files = files,
                Dependencies = dependencies,
                FrameworkListsPath = frameworkListsPath
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);

            // System.Collections.Immutable is not inbox and we've specified different versions for netstandard1.0 and netstandard1.3, so
            // we're expecting those dependencies to both be present for the net45 and net46 target frameworks.
            Assert.Equal(3, task.TrimmedDependencies.Length);
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Equals("net45") && f.ItemSpec.Equals("System.Collections.Immutable", StringComparison.OrdinalIgnoreCase)).Count());
            Assert.Equal(1, task.TrimmedDependencies.Where(f => f.GetMetadata("TargetFramework").Equals("net451") && f.ItemSpec.Equals("System.Collections.Immutable", StringComparison.OrdinalIgnoreCase)).Count());
        }
Beispiel #12
0
        private bool HasPackagesToHarvest()
        {
            bool result = true;

            IEnumerable<string> packageDirs = new[] { Path.Combine(PackageId, PackageVersion) };

            if (RuntimePackages != null)
            {
                packageDirs = packageDirs.Concat(
                    RuntimePackages.Select(p => Path.Combine(p.ItemSpec, p.GetMetadata("Version"))));
            }

            foreach (var packageDir in packageDirs)
            {
                var pathToPackage = Path.Combine(PackagesFolder, packageDir);
                if (!Directory.Exists(pathToPackage))
                {
                    Log.LogMessage(LogImportance.Low, $"Will not harvest files & support from package {packageDir} because {pathToPackage} does not exist.");
                    result = false;
                }
            }

            return result;
        }
Beispiel #13
0
 /// <summary>
 /// Execution handler for tasks running under MSBuild.
 /// </summary>
 /// <param name="services">Override services, can be null. Used to get services before falling back on defaults.</param>
 public BuildTaskExecution(MSBuildFramework.IBuildEngine buildEngine, ITaskOutputHandler outputHandler, IArgumentProvider argumentProvider, ITaskRegistry taskRegistry, ITypedServiceProvider services = null)
     : base(argumentProvider, taskRegistry, services)
 {
     this.outputHandler = outputHandler;
     this.buildEngine = buildEngine;
 }
        public void OOBFxShouldNotAddWhenAlreadyExists()
        {
            ITaskItem[] files = new[]
            {
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "runtimes/aot/lib/netcore50", ""),
                CreateItem(@"D:\K2\binaries\x86ret\Contracts\System.Reflection.Emit\4.0.1.0\System.Reflection.Emit.dll", "ref/netstandard1.1", "netstandard1.1"),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1033\System.Reflection.Emit.xml", "ref/netstandard1.1", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1028\System.Reflection.Emit.xml", "ref/netstandard1.1/zh-hant", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1031\System.Reflection.Emit.xml", "ref/netstandard1.1/de", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1036\System.Reflection.Emit.xml", "ref/netstandard1.1/fr", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1040\System.Reflection.Emit.xml", "ref/netstandard1.1/it", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1041\System.Reflection.Emit.xml", "ref/netstandard1.1/ja", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1042\System.Reflection.Emit.xml", "ref/netstandard1.1/ko", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1049\System.Reflection.Emit.xml", "ref/netstandard1.1/ru", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\2052\System.Reflection.Emit.xml", "ref/netstandard1.1/zh-hans", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\3082\System.Reflection.Emit.xml", "ref/netstandard1.1/es", ""),
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Libraries\System.Reflection.Emit.dll", "lib/netcoreapp1.0", "netcoreapp1.0"),
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Libraries\netcoreforcoreclr\System.Reflection.Emit.dll", "lib/netcore50", "netcore50"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoAndroid10", ""),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/MonoAndroid10", ""),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinmac20", ""),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/xamarinmac20", ""),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/net45", ""),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/net45", "")
};

            ITaskItem[] oobFx = new[] { new TaskItem("netcore50") };

            EnsureOOBFramework task = new EnsureOOBFramework()
            {
                BuildEngine = _engine,
                Files = files,
                OOBFrameworks = oobFx,
                RuntimeId = "",
                RuntimeJson = "runtime.json"
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);
            Assert.Equal(0, task.AdditionalFiles.Length);
        }
        public void OOBFxShouldNotAddForCompletelyOOB()
        {
            ITaskItem[] files = new[]
            {
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Libraries\System.Xml.XPath.XDocument.dll", "lib/netstandard1.3", "netstandard1.3"),
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Libraries\net\System.Xml.XPath.XDocument.dll", "lib/net46", "net46"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoAndroid10", "MonoAndroid10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoTouch10", "MonoTouch10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinios10", "xamarinios10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinmac20", "xamarinmac20"),
                CreateItem(@"D:\K2\binaries\x86ret\Contracts\System.Xml.XPath.XDocument\4.0.1.0\System.Xml.XPath.XDocument.dll", "ref/netstandard1.0", "netstandard1.0"),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1033\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1028\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0/zh-hant", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1031\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0/de", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1036\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0/fr", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1040\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0/it", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1041\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0/ja", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1042\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0/ko", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1049\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0/ru", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\2052\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0/zh-hans", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\3082\System.Xml.XPath.XDocument.xml", "ref/netstandard1.0/es", ""),
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Libraries\net\System.Xml.XPath.XDocument.dll", "ref/net46", "net46"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/MonoAndroid10", "MonoAndroid10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/MonoTouch10", "MonoTouch10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/xamarinios10", "xamarinios10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/xamarinmac20", "xamarinmac20")
            };

            ITaskItem[] oobFx = new[] { new TaskItem("netcore50") };

            EnsureOOBFramework task = new EnsureOOBFramework()
            {
                BuildEngine = _engine,
                Files = files,
                OOBFrameworks = oobFx
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);
            Assert.Equal(0, task.AdditionalFiles.Length);
        }
        public void OOBFxShouldDoNothing()
        {
            ITaskItem[] files = new[]
            {
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Libraries\System.Xml.XmlSerializer.dll", "lib/netcoreapp1.0", "netcoreapp1.0"),
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Libraries\System.Xml.XmlSerializer.dll", "lib/netcore50", "netcore50"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoAndroid10", "MonoAndroid10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoTouch10", "MonoTouch10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/net45", "net45"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/win8", "win8"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/wpa81", "wpa81"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinios10", "xamarinios10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinmac20", "xamarinmac20")
            };

            ITaskItem[] oobFx = new[] { new TaskItem("netcore50") };

            EnsureOOBFramework task = new EnsureOOBFramework()
            {
                BuildEngine = _engine,
                Files = files,
                OOBFrameworks = oobFx
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);
            Assert.Equal(0, task.AdditionalFiles.Length);
        }
        public void OOBFxShouldAddRef()
        {
            ITaskItem[] files = new[]
            {
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoAndroid10", "MonoAndroid10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoTouch10", "MonoTouch10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/net45", "net45"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/win8", "win8"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/wp80", "wp80"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/wpa81", "wpa81"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinios10", "xamarinios10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinmac20", "xamarinmac20"),
                CreateItem(@"D:\K2\binaries\x86ret\Contracts\System.Threading\4.0.0.0\System.Threading.dll", "ref/netstandard1.0", "netstandard1.0"),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1033\System.Threading.xml", "ref/netstandard1.0", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1028\System.Threading.xml", "ref/netstandard1.0/zh-hant", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1031\System.Threading.xml", "ref/netstandard1.0/de", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1036\System.Threading.xml", "ref/netstandard1.0/fr", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1040\System.Threading.xml", "ref/netstandard1.0/it", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1041\System.Threading.xml", "ref/netstandard1.0/ja", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1042\System.Threading.xml", "ref/netstandard1.0/ko", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1049\System.Threading.xml", "ref/netstandard1.0/ru", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\2052\System.Threading.xml", "ref/netstandard1.0/zh-hans", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\3082\System.Threading.xml", "ref/netstandard1.0/es", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1028\System.Threading.xml", "ref/netstandard1.3/zh-hant", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1031\System.Threading.xml", "ref/netstandard1.3/de", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1033\System.Threading.xml", "ref/netstandard1.3", ""),
                CreateItem(@"D:\K2\binaries\x86ret\Contracts\System.Threading\4.0.11.0\System.Threading.dll", "ref/netstandard1.3", "netstandard1.3"),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1036\System.Threading.xml", "ref/netstandard1.3/fr", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1040\System.Threading.xml", "ref/netstandard1.3/it", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1041\System.Threading.xml", "ref/netstandard1.3/ja", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1042\System.Threading.xml", "ref/netstandard1.3/ko", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1049\System.Threading.xml", "ref/netstandard1.3/ru", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\2052\System.Threading.xml", "ref/netstandard1.3/zh-hans", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\3082\System.Threading.xml", "ref/netstandard1.3/es", ""),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/MonoAndroid10", "MonoAndroid10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/MonoTouch10", "MonoTouch10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/net45", "net45"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/win8", "win8"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/wp80", "wp80"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/wpa81", "wpa81"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/xamarinios10", "xamarinios10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/xamarinmac20", "xamarinmac20"),
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Manifests\System.Threading\runtime.json", "", "")
            };

            string[] oobFx = new[] { "netcore50" };

            EnsureOOBFramework task = new EnsureOOBFramework()
            {
                BuildEngine = _engine,
                Files = files,
                OOBFrameworks = oobFx
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);
            Assert.Equal(11, task.AdditionalFiles.Length);
            Assert.All(task.AdditionalFiles, f => f.GetMetadata("TargetPath").Contains(oobFx[0]));
            Assert.All(task.AdditionalFiles, f => f.GetMetadata("TargetPath").StartsWith("ref"));
            Assert.All(task.AdditionalFiles, f => f.GetMetadata("TargetFramework").Equals(oobFx[0]));
        }
Beispiel #18
0
 public BuildTaskLoggers(MSBuildFramework.IBuildEngine buildEngine, ITask task, IArgumentProvider arguments)
 {
     BuildLogger logger = new BuildLogger(buildEngine, task.GetType().ToString());
     this.RegisterLogger(LoggerType.Result, logger);
     this.RegisterLogger(LoggerType.Status, logger);
 }
        public void OOBFxShouldAddRefAndLib()
        {
            ITaskItem[] files = new[]
            {
                CreateItem(@"D:\K2\binaries\x86ret\NETCore\Libraries\System.Collections.Concurrent.dll", "lib/netstandard1.3", "netstandard1.3"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoAndroid10", "MonoAndroid10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/MonoTouch10", "MonoTouch10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/net45", "net45"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/win8", "win8"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/wpa81", "wpa81"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinios10", "xamarinios10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "lib/xamarinmac20", "xamarinmac20"),
                CreateItem(@"D:\K2\binaries\x86ret\Contracts\System.Collections.Concurrent\4.0.0.0\System.Collections.Concurrent.dll", "ref/netstandard1.1", "netstandard1.1"),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1033\System.Collections.Concurrent.xml", "ref/netstandard1.1", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1028\System.Collections.Concurrent.xml", "ref/netstandard1.1/zh-hant", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1031\System.Collections.Concurrent.xml", "ref/netstandard1.1/de", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1036\System.Collections.Concurrent.xml", "ref/netstandard1.1/fr", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1040\System.Collections.Concurrent.xml", "ref/netstandard1.1/it", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1041\System.Collections.Concurrent.xml", "ref/netstandard1.1/ja", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1042\System.Collections.Concurrent.xml", "ref/netstandard1.1/ko", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1049\System.Collections.Concurrent.xml", "ref/netstandard1.1/ru", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\2052\System.Collections.Concurrent.xml", "ref/netstandard1.1/zh-hans", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\3082\System.Collections.Concurrent.xml", "ref/netstandard1.1/es", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1028\System.Collections.Concurrent.xml", "ref/netstandard1.3/zh-hant", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1031\System.Collections.Concurrent.xml", "ref/netstandard1.3/de", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1033\System.Collections.Concurrent.xml", "ref/netstandard1.3", ""),
                CreateItem(@"D:\K2\binaries\x86ret\Contracts\System.Collections.Concurrent\4.0.11.0\System.Collections.Concurrent.dll", "ref/netstandard1.3", "netstandard1.3"),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1036\System.Collections.Concurrent.xml", "ref/netstandard1.3/fr", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1040\System.Collections.Concurrent.xml", "ref/netstandard1.3/it", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1041\System.Collections.Concurrent.xml", "ref/netstandard1.3/ja", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1042\System.Collections.Concurrent.xml", "ref/netstandard1.3/ko", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\1049\System.Collections.Concurrent.xml", "ref/netstandard1.3/ru", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\2052\System.Collections.Concurrent.xml", "ref/netstandard1.3/zh-hans", ""),
                CreateItem(@"D:\K2\src\Redist\x86\retail\bin\i386\HelpDocs\intellisense\NETCore5\3082\System.Collections.Concurrent.xml", "ref/netstandard1.3/es", ""),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/MonoAndroid10", "MonoAndroid10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/MonoTouch10", "MonoTouch10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/net45", "net45"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/win8", "win8"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/wpa81", "wpa81"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/xamarinios10", "xamarinios10"),
                CreateItem(@"D:\K2\src\NDP\FxCore\src\Packages\_._", "ref/xamarinmac20", "xamarinmac20")
            };

            ITaskItem[] oobFx = new[] { new TaskItem("netcore50") };

            EnsureOOBFramework task = new EnsureOOBFramework()
            {
                BuildEngine = _engine,
                Files = files,
                OOBFrameworks = oobFx
            };

            _log.Reset();
            task.Execute();
            Assert.Equal(0, _log.ErrorsLogged);
            Assert.Equal(0, _log.WarningsLogged);
            Assert.Equal(12, task.AdditionalFiles.Length);
            Assert.All(task.AdditionalFiles, f => f.GetMetadata("TargetPath").Contains(oobFx[0].ItemSpec));
            Assert.All(task.AdditionalFiles, f => f.GetMetadata("TargetFramework").Equals(oobFx[0].ItemSpec));
        }