private void WireUpVisualStudioEvents(IVisualStudioEventProxy visualStudioEventProxy, ICodeGeneratorDependencyFactory codeGeneratorDependencyFactory) { CodeGeneratorDependency dummy; visualStudioEventProxy.OnCodeGenerated += (sender, args) => { var dependency = codeGeneratorDependencyFactory.BuildDependency(args.Response); if (null != dependency) { //Add Dependency _codeGeneratorDependencies.AddOrUpdate( dependency.TargetFile.FileName, dependency, (s, d) => dependency); } else if ( null != args.Response && null != args.Response.CodeGeneratorContext && null != args.Response.CodeGeneratorContext.Source && !args.Response.CodeGeneratorContext.Source.FileName.IsNullOrEmpty()) { //Remove Dependency _codeGeneratorDependencies.TryRemove( args.Response.CodeGeneratorContext.Source.FileName, out dummy); } }; visualStudioEventProxy.OnProjectItemRemoved += (sender, args) => { if (_codeGeneratorDependencies.TryRemove( args.ClassFullPath, out dummy)) { _log.InfoFormat("Evicted [{0}]", args.ClassFullPath); } }; visualStudioEventProxy.OnSolutionClosing += (sender, args) => { _log.Info("Solution closing. Clearing cache"); _codeGeneratorDependencies = new ConcurrentDictionary <FilePath, CodeGeneratorDependency>(); }; }
private void WireUpVisualStudioEvents(IVisualStudioEventProxy visualStudioEventProxy, ICodeGeneratorDependencyFactory codeGeneratorDependencyFactory) { CodeGeneratorDependency dummy; visualStudioEventProxy.OnCodeGenerated += (sender, args) => { var dependency = codeGeneratorDependencyFactory.BuildDependency(args.Response); if (null != dependency) //Add Dependency _codeGeneratorDependencies.AddOrUpdate( dependency.TargetFile.FileName, dependency, (s, d) => dependency); else if ( null != args.Response && null != args.Response.CodeGeneratorContext && null != args.Response.CodeGeneratorContext.Source && !args.Response.CodeGeneratorContext.Source.FileName.IsNullOrEmpty()) //Remove Dependency _codeGeneratorDependencies.TryRemove( args.Response.CodeGeneratorContext.Source.FileName, out dummy); }; visualStudioEventProxy.OnProjectItemRemoved += (sender, args) => { if (_codeGeneratorDependencies.TryRemove( args.ClassFullPath, out dummy)) { _log.InfoFormat("Evicted [{0}]", args.ClassFullPath); } }; visualStudioEventProxy.OnSolutionClosing += (sender, args) => { _log.Info("Solution closing. Clearing cache"); _codeGeneratorDependencies = new ConcurrentDictionary<FilePath, CodeGeneratorDependency>(); }; }
public CodeGeneratorDependencyManager(IVisualStudioEventProxy visualStudioEventProxy, ICodeGeneratorDependencyFactory codeGeneratorDependencyFactory) { WireUpVisualStudioEvents(visualStudioEventProxy, codeGeneratorDependencyFactory); }
public CodeGeneratorDependencyManager(IVisualStudioEventProxy visualStudioEventProxy, ICodeGeneratorDependencyFactory codeGeneratorDependencyFactory) { WireUpVisualStudioEvents(visualStudioEventProxy, codeGeneratorDependencyFactory); }