Esempio n. 1
0
        /// <summary>Called when the associated data file changed: added/removed assemblies or includes.</summary>
        /// <param name="dataDiff">The difference between the old and new data.</param>
        private void OnFileDataChanged([NotNull] T4DeclaredAssembliesDiff dataDiff)
        {
            ShellLocks.AssertWriteAccessAllowed();
            if (!AssemblyReferenceManager.ProcessDiff(dataDiff))
            {
                return;
            }
            var changeBuilder = new PsiModuleChangeBuilder();

            changeBuilder.AddModuleChange(this, PsiModuleChange.ChangeType.Modified);
            // TODO: get rid of this queuing?
            ShellLocks.ExecuteOrQueueEx(
                "T4PsiModuleChange",
                () => ChangeManager.ExecuteAfterChange(
                    () => ShellLocks.ExecuteWithWriteLock(
                        () =>
            {
                if (!IsValid())
                {
                    return;
                }
                ChangeManager.OnProviderChanged(
                    ChangeProvider,
                    changeBuilder.Result,
                    SimpleTaskExecutor.Instance
                    );
            })
                    )
                );
        }
Esempio n. 2
0
 /// <summary>Called when the associated data file changed: added/removed assemblies or includes.</summary>
 /// <param name="dataDiff">The difference between the old and new data.</param>
 private void OnFileDataChanged([NotNull] T4DeclaredAssembliesDiff dataDiff)
 {
     ShellLocks.AssertWriteAccessAllowed();
     if (!AssemblyReferenceManager.ProcessDiff(dataDiff))
     {
         return;
     }
     NotifyModuleChange();
 }
Esempio n. 3
0
        public bool ProcessDiff(T4DeclaredAssembliesDiff diff)
        {
            bool hasChanges = false;

            // removes the assembly references from the old assembly directives
            foreach (var _ in diff.RemovedAssemblies.Where(TryRemoveReference))
            {
                hasChanges = true;
            }

            // adds assembly references from the new assembly directives
            foreach (var _ in diff.AddedAssemblies.Where(TryAddReference))
            {
                hasChanges = true;
            }

            return(hasChanges);
        }