示例#1
0
        public void AssembliesUpdated(IEnumerable <Exports.IAssembly> assemblyPaths)
        {
            var items = new List <ITaskItem>();

            var excludedAssemblies = ExcludeAssemblies != null?ExcludeAssemblies.Select(x => x.ItemSpec).ToList() : new List <string>(0);

            var assemblies = assemblyPaths.Distinct(new PathComparer()).ToList();

            foreach (var assemblyRef in assemblies)
            {
                if (excludedAssemblies.Contains(assemblyRef.AssemblyName.Name, StringComparer.OrdinalIgnoreCase))
                {
                    Log.LogMessage("Ignoring OpenWrap reference to '{0}'", assemblyRef.File.Path.FullPath);
                    continue;
                }
                if (InputReferences.Any(x => string.Equals(x.ItemSpec, assemblyRef.AssemblyName.Name, StringComparison.OrdinalIgnoreCase)))
                {
                    Log.LogMessage("OpenWrap reference to '{0}' already added", assemblyRef.File.Path.FullPath);
                    continue;
                }
                Log.LogMessage("Adding OpenWrap reference to '{0}'", assemblyRef.File.Path.FullPath);
                var item = new TaskItem(assemblyRef.AssemblyName.FullName);
                item.SetMetadata("HintPath", assemblyRef.File.Path.FullPath);
                item.SetMetadata("Private", CopyLocal ? "True" : "False");
                item.SetMetadata("FromOpenWrap", "True");
                items.Add(item);
            }
            OutputReferences = items.ToArray();
        }