private ProjectTargetElement CreateTarget(ProjectRootElement csproj, string scriptSetName) { var targetName = $"{scriptSetName[0].ToString().ToUpper()}{string.Concat(scriptSetName.Skip(1))}Script"; TargetHookInfo targetHookInfo; if (!ScriptSetToMSBuildHookTargetMap.TryGetValue(scriptSetName, out targetHookInfo)) { MigrationErrorCodes.MIGRATE1019( $"{scriptSetName} is an unsupported script event hook for project migration") .Throw(); } var target = csproj.CreateTargetElement(targetName); csproj.InsertBeforeChild(target, csproj.LastChild); if (targetHookInfo.IsRunBefore) { target.BeforeTargets = targetHookInfo.TargetName; } else { target.AfterTargets = targetHookInfo.TargetName; } // Run Scripts After each inner build target.Condition = " '$(IsCrossTargetingBuild)' != 'true' "; return(target); }
private ProjectTargetElement CreateTarget(ProjectRootElement csproj, string scriptSetName, bool isMultiTFM) { var targetName = $"{scriptSetName[0].ToString().ToUpper()}{string.Concat(scriptSetName.Skip(1))}Script"; TargetHookInfo targetHookInfo; if (!ScriptSetToMSBuildHookTargetMap.TryGetValue(scriptSetName, out targetHookInfo)) { MigrationErrorCodes.MIGRATE1019( String.Format(LocalizableStrings.MIGRATE1019Arg, scriptSetName)) .Throw(); } var target = csproj.CreateTargetElement(targetName); csproj.InsertBeforeChild(target, csproj.LastChild); if (targetHookInfo.IsRunBefore) { target.BeforeTargets = targetHookInfo.TargetName; } else { target.AfterTargets = targetHookInfo.TargetName; } if (isMultiTFM) { ConditionTargetToRunScriptsAfterEachInnerBuild(target); } return(target); }
public void AddTargetInvalidName() { Assert.Throws <ArgumentException>(() => { ProjectRootElement project = ProjectRootElement.Create(); project.CreateTargetElement("@#$invalid@#$"); } ); }
public void ShouldHaveFilePathLocationEvenIfNotLoadedNorSavedYet() { ProjectRootElement project = ProjectRootElement.Create(); project.FullPath = "c:\\x"; ProjectTargetElement target = project.CreateTargetElement("t"); target.Outputs = "o"; project.AppendChild(target); Assert.Equal(project.FullPath, target.Location.File); Assert.Equal(project.FullPath, target.OutputsLocation.File); }
public void XmlLocationsAreCached() { ProjectRootElement project = ProjectRootElement.Create(); project.FullPath = "c:\\x"; ProjectTargetElement target = project.CreateTargetElement("t"); target.Outputs = "o"; project.AppendChild(target); ElementLocation e1 = target.Location; ElementLocation e2 = target.OutputsLocation; Assert.Equal(true, Object.ReferenceEquals(e1, target.Location)); Assert.Equal(true, Object.ReferenceEquals(e2, target.OutputsLocation)); }
public void XmlLocationReflectsRename() { ProjectRootElement project = ProjectRootElement.Create(); project.FullPath = "c:\\x"; ProjectTargetElement target = project.CreateTargetElement("t"); target.Outputs = "o"; project.AppendChild(target); Assert.Equal(project.FullPath, target.Location.File); Assert.Equal(project.FullPath, target.OutputsLocation.File); project.FullPath = "c:\\y"; Assert.Equal(project.FullPath, target.Location.File); Assert.Equal(project.FullPath, target.OutputsLocation.File); }
private ProjectTargetElement CreateTarget(ProjectRootElement csproj, string scriptSetName) { var targetName = $"{scriptSetName[0].ToString().ToUpper()}{string.Concat(scriptSetName.Skip(1))}Script"; var targetHookInfo = ScriptSetToMSBuildHookTargetMap[scriptSetName]; var target = csproj.CreateTargetElement(targetName); csproj.InsertBeforeChild(target, csproj.LastChild); if (targetHookInfo.IsRunBefore) { target.BeforeTargets = targetHookInfo.TargetName; } else { target.AfterTargets = targetHookInfo.TargetName; } return(target); }
/// <summary> /// Creates a ProjectTargetElement representing this instance. Attaches it to the specified root element. /// </summary> /// <param name="rootElement">The root element to which the new element will belong.</param> /// <returns>The new element.</returns> internal ProjectTargetElement ToProjectTargetElement(ProjectRootElement rootElement) { ProjectTargetElement target = rootElement.CreateTargetElement(Name); rootElement.AppendChild(target); target.Condition = Condition; target.DependsOnTargets = DependsOnTargets; target.Inputs = Inputs; target.Outputs = Outputs; target.Returns = Returns; foreach (ProjectTaskInstance taskInstance in Tasks) { ProjectTaskElement taskElement = target.AddTask(taskInstance.Name); taskElement.Condition = taskInstance.Condition; taskElement.ContinueOnError = taskInstance.ContinueOnError; taskElement.MSBuildArchitecture = taskInstance.MSBuildArchitecture; taskElement.MSBuildRuntime = taskInstance.MSBuildRuntime; foreach (KeyValuePair <string, string> taskParameterEntry in taskInstance.Parameters) { taskElement.SetParameter(taskParameterEntry.Key, taskParameterEntry.Value); } foreach (ProjectTaskInstanceChild outputInstance in taskInstance.Outputs) { if (outputInstance is ProjectTaskOutputItemInstance) { ProjectTaskOutputItemInstance outputItemInstance = outputInstance as ProjectTaskOutputItemInstance; taskElement.AddOutputItem(outputItemInstance.TaskParameter, outputItemInstance.ItemType, outputItemInstance.Condition); } else if (outputInstance is ProjectTaskOutputPropertyInstance) { ProjectTaskOutputPropertyInstance outputPropertyInstance = outputInstance as ProjectTaskOutputPropertyInstance; taskElement.AddOutputItem(outputPropertyInstance.TaskParameter, outputPropertyInstance.PropertyName, outputPropertyInstance.Condition); } } } return(target); }
/// <inheritdoc /> protected override ProjectElement CreateNewInstance(ProjectRootElement owner) { return(owner.CreateTargetElement(Name)); }
public void AddTargetInvalidName() { ProjectRootElement project = ProjectRootElement.Create(); project.CreateTargetElement("@#$invalid@#$"); }