Exemplo n.º 1
0
    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;
 }