public string GetBuildEngineKey() { var projectFilePath = buildEnginePropertyExtractor.GetProjectPath(); var xDocument = XDocument.Load(projectFilePath); var weavingTaskName = config.GetType().Assembly.GetName().Name + ".WeavingTask"; var weavingTaskNode = xDocument.BuildDescendants(weavingTaskName).First(); var xAttribute = weavingTaskNode.Parent.Attribute("Name"); if (xAttribute == null) { throw new Exception("Target node contains no 'Name' attribute."); } ; var targetNodeName = xAttribute.Value.ToUpperInvariant(); switch (targetNodeName) { case ("AFTERCOMPILE"): { logger.LogMessage("\tTarget node is 'AfterCompile' so using 'IntermediateAssembly'."); return("IntermediateAssembly"); } case ("AFTERBUILD"): { logger.LogMessage("\tTarget node is 'AfterBuild' so using 'TargetPath'."); return("TargetPath"); } } throw new WeavingException( string.Format( @"Failed to derive TargetPath from target node. WeavingTask is located in '{0}'. Target path can only be derived when WeavingTask is located in 'AfterCompile' or 'AfterBuild'. Please define 'TargetPath' as follows: <WeavingTask ... TargetPath=""PathToYourAssembly"" />", targetNodeName)); }
public FileChangedChecker(Logger logger, WeavingTask config, ModuleReader moduleReader) { namespaceKey = config.GetType().Namespace.Replace(".", string.Empty); this.logger = logger; this.moduleReader = moduleReader; }