diff --git a/src/MSBuild/Resources/Strings.resx b/src/MSBuild/Resources/Strings.resx index c6ddf821ce0..d0e6e832779 100644 --- a/src/MSBuild/Resources/Strings.resx +++ b/src/MSBuild/Resources/Strings.resx @@ -1184,6 +1184,13 @@ Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch. + + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory + + MSBUILD : MSB1045: Stopping because of syntax errors in project file. {StrBegin="MSBUILD : MSB1045: "} diff --git a/src/MSBuild/Resources/xlf/Strings.cs.xlf b/src/MSBuild/Resources/xlf/Strings.cs.xlf index 00e2e647459..784b9cb4c01 100644 --- a/src/MSBuild/Resources/xlf/Strings.cs.xlf +++ b/src/MSBuild/Resources/xlf/Strings.cs.xlf @@ -64,6 +64,14 @@ uspělo s {0} upozorněním(i). Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.de.xlf b/src/MSBuild/Resources/xlf/Strings.de.xlf index 74ac618d772..ac9fa526f6d 100644 --- a/src/MSBuild/Resources/xlf/Strings.de.xlf +++ b/src/MSBuild/Resources/xlf/Strings.de.xlf @@ -64,6 +64,14 @@ erfolgreich mit {0} Warnung(en) Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.es.xlf b/src/MSBuild/Resources/xlf/Strings.es.xlf index 7ec6b54f704..14157f5e8e7 100644 --- a/src/MSBuild/Resources/xlf/Strings.es.xlf +++ b/src/MSBuild/Resources/xlf/Strings.es.xlf @@ -64,6 +64,14 @@ correcto con {0} advertencias Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.fr.xlf b/src/MSBuild/Resources/xlf/Strings.fr.xlf index 68b3a15005b..755d762f8e5 100644 --- a/src/MSBuild/Resources/xlf/Strings.fr.xlf +++ b/src/MSBuild/Resources/xlf/Strings.fr.xlf @@ -64,6 +64,14 @@ a réussi avec {0} avertissement(s) Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.it.xlf b/src/MSBuild/Resources/xlf/Strings.it.xlf index 62edb772c61..2dda397dcea 100644 --- a/src/MSBuild/Resources/xlf/Strings.it.xlf +++ b/src/MSBuild/Resources/xlf/Strings.it.xlf @@ -64,6 +64,14 @@ completato con {0} avvisi Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.ja.xlf b/src/MSBuild/Resources/xlf/Strings.ja.xlf index 686748c8286..e46de3c07a5 100644 --- a/src/MSBuild/Resources/xlf/Strings.ja.xlf +++ b/src/MSBuild/Resources/xlf/Strings.ja.xlf @@ -64,6 +64,14 @@ {0} 件の警告付きで成功しました Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.ko.xlf b/src/MSBuild/Resources/xlf/Strings.ko.xlf index ddebf3ab442..cb7584f74a5 100644 --- a/src/MSBuild/Resources/xlf/Strings.ko.xlf +++ b/src/MSBuild/Resources/xlf/Strings.ko.xlf @@ -64,6 +64,14 @@ {0} 경고와 함께 성공 Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.pl.xlf b/src/MSBuild/Resources/xlf/Strings.pl.xlf index fb1b6dec832..5a74d9cc878 100644 --- a/src/MSBuild/Resources/xlf/Strings.pl.xlf +++ b/src/MSBuild/Resources/xlf/Strings.pl.xlf @@ -64,6 +64,14 @@ zakończono powodzeniem, z ostrzeżeniami w liczbie: {0} Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.pt-BR.xlf b/src/MSBuild/Resources/xlf/Strings.pt-BR.xlf index 5b12a8d74c8..ba248b863e7 100644 --- a/src/MSBuild/Resources/xlf/Strings.pt-BR.xlf +++ b/src/MSBuild/Resources/xlf/Strings.pt-BR.xlf @@ -64,6 +64,14 @@ êxito(s) com {0} aviso(s) Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.ru.xlf b/src/MSBuild/Resources/xlf/Strings.ru.xlf index 27ad009b870..bbd0ded004e 100644 --- a/src/MSBuild/Resources/xlf/Strings.ru.xlf +++ b/src/MSBuild/Resources/xlf/Strings.ru.xlf @@ -64,6 +64,14 @@ успешно выполнено с предупреждениями ({0}) Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.tr.xlf b/src/MSBuild/Resources/xlf/Strings.tr.xlf index 52a46bd9af1..81c6d8cfcf5 100644 --- a/src/MSBuild/Resources/xlf/Strings.tr.xlf +++ b/src/MSBuild/Resources/xlf/Strings.tr.xlf @@ -64,6 +64,14 @@ {0} uyarıyla başarılı oldu Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.zh-Hans.xlf b/src/MSBuild/Resources/xlf/Strings.zh-Hans.xlf index 2e64124c6d3..4537d1af02c 100644 --- a/src/MSBuild/Resources/xlf/Strings.zh-Hans.xlf +++ b/src/MSBuild/Resources/xlf/Strings.zh-Hans.xlf @@ -64,6 +64,14 @@ 成功,出现 {0} 警告 Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/Resources/xlf/Strings.zh-Hant.xlf b/src/MSBuild/Resources/xlf/Strings.zh-Hant.xlf index 6a70c9a06b1..630913f5cf1 100644 --- a/src/MSBuild/Resources/xlf/Strings.zh-Hant.xlf +++ b/src/MSBuild/Resources/xlf/Strings.zh-Hant.xlf @@ -64,6 +64,14 @@ 成功但有 {0} 個警告 Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + -> {0} + -> {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory diff --git a/src/MSBuild/TerminalLogger/Project.cs b/src/MSBuild/TerminalLogger/Project.cs index 959bab12960..eabfd989c3e 100644 --- a/src/MSBuild/TerminalLogger/Project.cs +++ b/src/MSBuild/TerminalLogger/Project.cs @@ -51,6 +51,11 @@ public Project(string? targetFramework, StopwatchAbstraction? stopwatch) /// public bool IsTestProject { get; set; } + /// + /// True when the project has run target with name "_CachePluginRunStart" defined in . + /// + public bool IsCachePluginProject { get; set; } + /// /// A lazily initialized list of build messages/warnings/errors raised during the build. /// diff --git a/src/MSBuild/TerminalLogger/TerminalLogger.cs b/src/MSBuild/TerminalLogger/TerminalLogger.cs index dd13fbe28aa..585dc5a62be 100644 --- a/src/MSBuild/TerminalLogger/TerminalLogger.cs +++ b/src/MSBuild/TerminalLogger/TerminalLogger.cs @@ -200,6 +200,11 @@ public ProjectContext(BuildEventContext context) /// private DateTime? _testEndTime; + /// + /// Name of target that identifies the project cache plugin run has just started. + /// + private static string _cachePluginStartTarget = "_CachePluginRunStart"; + /// /// Whether to show TaskCommandLineEventArgs high-priority messages. /// @@ -630,7 +635,8 @@ private void ProjectFinished(object sender, ProjectFinishedEventArgs e) } } - Terminal.WriteLine(ResourceUtilities.FormatResourceStringIgnoreCodeAndKeyword("ProjectFinished_OutputPath", + string resourceName = project.IsCachePluginProject ? "CachePluginProjectFinished_OutputPath" : "ProjectFinished_OutputPath"; + Terminal.WriteLine(ResourceUtilities.FormatResourceStringIgnoreCodeAndKeyword(resourceName, $"{AnsiCodes.LinkPrefix}{urlString}{AnsiCodes.LinkInfix}{outputPathSpan.ToString()}{AnsiCodes.LinkSuffix}")); } else @@ -673,12 +679,16 @@ private void TargetStarted(object sender, TargetStartedEventArgs e) string projectFile = Path.GetFileNameWithoutExtension(e.ProjectFile); + string targetName = e.TargetName; + if (targetName == _cachePluginStartTarget) + { + project.IsCachePluginProject = true; + } - var isTestTarget = e.TargetName == _testStartTarget; - - var targetName = isTestTarget ? "Testing" : e.TargetName; - if (isTestTarget) + if (targetName == _testStartTarget) { + targetName = "Testing"; + // Use the minimal start time, so if we run tests in parallel, we can calculate duration // as this start time, minus time when tests finished. _testStartTime = _testStartTime == null @@ -931,7 +941,7 @@ private void ErrorRaised(object sender, BuildErrorEventArgs e) } } - #endregion +#endregion #region Refresher thread implementation