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();
}