コード例 #1
0
        public static void WatcherChangesetSent(this IActionLog log, MsBuildFileSystemWatcher.Changeset changeset)
        {
            var sb = new StringBuilder();

            sb.AppendLine("MsBuildFileSystemWatcher changeset sent.")
            .AppendWatcherChangesetPart(changeset.AddedFiles, "Added Files:")
            .AppendWatcherChangesetPart(changeset.RenamedFiles, "Renamed Files:")
            .AppendWatcherChangesetPart(changeset.RemovedFiles, "Removed Files:")
            .AppendWatcherChangesetPart(changeset.AddedDirectories, "Added Directories:")
            .AppendWatcherChangesetPart(changeset.RenamedDirectories, "Renamed Directories:")
            .AppendWatcherChangesetPart(changeset.RemovedDirectories, "Removed Directories:");

            log.Write(LogVerbosity.Normal, MessageCategory.General, sb.ToString());
        }
コード例 #2
0
        public static void WatcherChangesetSent(this IActionLog log, MsBuildFileSystemWatcher.Changeset changeset)
        {
            var sb = new StringBuilder();

            sb.AppendLine("MsBuildFileSystemWatcher changeset sent.")
            .AppendWatcherChangesetPart(changeset.AddedFiles, "Added Files:")
            .AppendWatcherChangesetPart(changeset.RenamedFiles, "Renamed Files:")
            .AppendWatcherChangesetPart(changeset.RemovedFiles, "Removed Files:")
            .AppendWatcherChangesetPart(changeset.AddedDirectories, "Added Directories:")
            .AppendWatcherChangesetPart(changeset.RenamedDirectories, "Renamed Directories:")
            .AppendWatcherChangesetPart(changeset.RemovedDirectories, "Removed Directories:");

            log.Trace(sb.ToString());
        }
コード例 #3
0
        private async Task FileSystemChanged(MsBuildFileSystemWatcher.Changeset changeset)
        {
            _log.ApplyProjectChangesStarted();

            if (_unloadCancellationToken.IsCancellationRequested)
            {
                return;
            }

            try {
                using (var access = await _projectLockService.WriteLockAsync(_unloadCancellationToken)) {
                    await access.CheckoutAsync(_inMemoryImportFullPath);

                    _temporaryAddedItemGroup.RemoveAllChildren();

                    await RemoveFiles(changeset.RemovedFiles, access);
                    await RemoveDirectories(changeset.RemovedDirectories, access);

                    await RenameFiles(changeset.RenamedFiles, access);
                    await RenameDirectories(changeset.RenamedDirectories, access);

                    AddDirectories(changeset.AddedDirectories);
                    AddFiles(changeset.AddedFiles);

                    _log.MsBuildAfterChangesApplied(_inMemoryImport);

                    foreach (var configuredProject in _unconfiguredProject.LoadedConfiguredProjects)
                    {
                        try {
                            var project =
                                await access.GetProjectAsync(configuredProject, _unloadCancellationToken);

                            project.ReevaluateIfNecessary();
                        } catch (Exception ex) {
                            Trace.Fail("Unable to mark a configuration as dirty" + ex.Message, ex.StackTrace);
                        }
                    }
                }
            } catch (Exception ex) {
                Trace.Fail("Unable to handle file system change:" + ex.Message, ex.StackTrace);
            }

            _log.ApplyProjectChangesFinished();
        }
コード例 #4
0
            public Delay50MsNoFiltering()
            {
                _fileSystem = Substitute.For <IFileSystem>();
                var watchers = GetWatchersFromMsBuildFileSystemWatcher(_fileSystem);

                _fileSystemFilter = Substitute.For <IMsBuildFileSystemFilter>();
                _fileSystemFilter.IsFileAllowed(Arg.Any <string>(), Arg.Any <FileAttributes>()).ReturnsForAnyArgs(true);
                _fileSystemFilter.IsDirectoryAllowed(Arg.Any <string>(), Arg.Any <FileAttributes>()).ReturnsForAnyArgs(true);

                _taskScheduler = new ControlledTaskScheduler(SynchronizationContext.Current);

                _fileSystemWatcher = new MsBuildFileSystemWatcher(ProjectDirectory, "*", 50, 50, _fileSystem, _fileSystemFilter, Substitute.For <IActionLog>(), _taskScheduler);
                _taskScheduler.Link(_fileSystemWatcher.SourceBlock, c => { _changeset = c; });

                _fileSystemWatcher.Start();
                _fileWatcher       = watchers.FileWatcher;
                _directoryWatcher  = watchers.DirectoryWatcher;
                _attributesWatcher = watchers.AttributesWatcher;
            }
コード例 #5
0
            public async Task InitializeAsync()
            {
                await _taskScheduler;

                _changeset = null;
            }
            public async Task InitializeAsync()
            {
                await _taskScheduler;

                _taskScheduler.Link(_fileSystemWatcher.SourceBlock, c => { _changeset = c; });
            }
コード例 #7
0
ファイル: AssertionExtensions.cs プロジェクト: zachwieja/RTVS
 public static MsBuildFileSystemWatcherChangesetAssertions Should(this MsBuildFileSystemWatcher.Changeset token)
 {
     return(new MsBuildFileSystemWatcherChangesetAssertions(token));
 }