Skip to content

Commit 4bbaaca

Browse files
surayya-MSladipro
andauthored
Log SDK resolution result (#9621)
* log success message when sdk is resolved * fix typo * change message text * include sdk result and sdk resolver info in the message * 1. remove SdkResolving log 2. log each SDK resolver attempt + errors and warnings as message 3. rephrese the success message * include "Warnings" and "Errors" in the message so they could be translated * add back the line * add localization comment and fix typo * update localization strings * Update src/Build/BackEnd/Components/SdkResolution/SdkResolverService.cs Co-authored-by: Ladi Prosek <[email protected]> --------- Co-authored-by: Ladi Prosek <[email protected]>
1 parent 45f3aed commit 4bbaaca

File tree

16 files changed

+243
-100
lines changed

16 files changed

+243
-100
lines changed

src/Build.UnitTests/BackEnd/SdkResolverService_Tests.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ public void AssertResolverThrows()
111111
e.Sdk.Name.ShouldBe("1sdkName");
112112
}
113113

114-
115114
[Fact]
116115
// Scenario: MockSdkResolverWithResolvableSdkPattern2 is a specific resolver (i.e. resolver with pattern)
117116
// and it successfully resolves sdk.
@@ -184,6 +183,21 @@ public void AssertFirstResolverWithPatternCanResolve()
184183
_logger.BuildMessageEvents.Select(i => i.Message).ShouldNotContain("MockSdkResolver1 running");
185184
}
186185

186+
[Fact]
187+
public void AssertSdkResolutionMessagesAreLogged()
188+
{
189+
SdkResolverService.Instance.InitializeForTests(new MockLoaderStrategy());
190+
SdkReference sdk = new SdkReference("1sdkName", "referencedVersion", "minimumVersion");
191+
192+
var result = SdkResolverService.Instance.ResolveSdk(BuildEventContext.InvalidSubmissionId, sdk, _loggingContext, new MockElementLocation("file"), "sln", "projectPath", interactive: false, isRunningInVisualStudio: false, failOnUnresolvedSdk: true);
193+
194+
// First resolver attempted to resolve, but failed.
195+
_logger.BuildMessageEvents.Select(i => i.Message).ShouldContain(ResourceUtilities.FormatResourceStringStripCodeAndKeyword("SDKResolverAttempt", nameof(MockResolverReturnsNull), sdk.ToString(), "null",
196+
ResourceUtilities.FormatResourceStringStripCodeAndKeyword("SDKResolverReturnedNull", nameof(MockResolverReturnsNull))));
197+
// Second resolver succeeded.
198+
_logger.BuildMessageEvents.Select(i => i.Message).ShouldContain(ResourceUtilities.FormatResourceStringStripCodeAndKeyword("SucceededToResolveSDK", sdk.ToString(), nameof(MockSdkResolver1), result.Path, result.Version));
199+
}
200+
187201
[Fact]
188202
public void AssertFirstResolverErrorsSupressedWhenResolved()
189203
{

src/Build/BackEnd/Components/SdkResolution/SdkResolverService.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,6 @@ private bool TryResolveSdkUsingSpecifiedResolvers(
312312
// Loop through resolvers which have already been sorted by priority, returning the first result that was successful
313313
SdkLogger buildEngineLogger = new SdkLogger(loggingContext);
314314

315-
loggingContext.LogComment(MessageImportance.Low, "SdkResolving", sdk.ToString());
316-
317315
foreach (SdkResolver sdkResolver in resolvers)
318316
{
319317
SdkResolverContext context = new SdkResolverContext(buildEngineLogger, projectPath, solutionPath, ProjectCollection.Version, interactive, isRunningInVisualStudio)
@@ -355,6 +353,8 @@ private bool TryResolveSdkUsingSpecifiedResolvers(
355353

356354
if (result.Success)
357355
{
356+
loggingContext.LogComment(MessageImportance.Low, "SucceededToResolveSDK", sdk.ToString(), sdkResolver.Name, result.Path ?? "null", result.Version ?? "null");
357+
358358
LogWarnings(loggingContext, sdkReferenceLocation, result.Warnings);
359359

360360
if (!IsReferenceSameVersion(sdk, result.Version))
@@ -369,6 +369,13 @@ private bool TryResolveSdkUsingSpecifiedResolvers(
369369
sdkResult = result;
370370
return true;
371371
}
372+
else if (loggingContext.LoggingService.MinimumRequiredMessageImportance >= MessageImportance.Low)
373+
{
374+
string resultWarnings = result.Warnings?.Any() == true ? string.Join(Environment.NewLine, result.Warnings) : "null";
375+
string resultErrors = result.Errors?.Any() == true ? string.Join(Environment.NewLine, result.Errors) : "null";
376+
377+
loggingContext.LogComment(MessageImportance.Low, "SDKResolverAttempt", sdkResolver.Name, sdk.ToString(), resultWarnings, resultErrors);
378+
}
372379

373380
results.Add(result);
374381
}

src/Build/Resources/Strings.resx

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1324,6 +1324,17 @@
13241324
<value>Could not resolve SDK "{0}". Exactly one of the probing messages below indicates why we could not resolve the SDK. Investigate and resolve that message to correctly specify the SDK.
13251325
{1}</value>
13261326
</data>
1327+
<data name="SucceededToResolveSDK" xml:space="preserve">
1328+
<value>The SDK "{0}" was successfully resolved by the "{1}" resolver to location "{2}" and version "{3}".</value>
1329+
</data>
1330+
<data name="SDKResolverAttempt" xml:space="preserve">
1331+
<value>The "{0}" resolver attempted to resolve the SDK "{1}".
1332+
Warnings: {2}
1333+
Errors: {3}</value>
1334+
<comment>
1335+
LOCALIZATION: Do not localize the word SDK. "{2}" is new line separated warnings or "null". "{3}" is new line separated errors or "null".
1336+
</comment>
1337+
</data>
13271338
<data name="CouldNotRunNuGetSdkResolver" xml:space="preserve">
13281339
<value>The NuGet-based SDK resolver failed to run because NuGet assemblies could not be located. Check your installation of MSBuild or set the environment variable "{0}" to the folder that contains the required NuGet assemblies. {1}</value>
13291340
</data>
@@ -1769,12 +1780,6 @@ Utilization: {0} Average Utilization: {1:###.0}</value>
17691780
LOCALIZATION: Do not localize the word SDK.
17701781
</comment>
17711782
</data>
1772-
<data name="SdkResolving" xml:space="preserve">
1773-
<value>Resolving SDK '{0}'...</value>
1774-
<comment>
1775-
LOCALIZATION: Do not localize the word SDK.
1776-
</comment>
1777-
</data>
17781783
<data name="ProjectGraphDoesNotSupportProjectReferenceWithToolset" xml:space="preserve">
17791784
<value>MSB4250: ProjectGraph does not support ProjectReference items with the ToolsVersion metadata set. Found ProjectReference "{0}" with ToolsVersion in file "{1}"</value>
17801785
<comment>

src/Build/Resources/xlf/Strings.cs.xlf

Lines changed: 16 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Build/Resources/xlf/Strings.de.xlf

Lines changed: 16 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Build/Resources/xlf/Strings.es.xlf

Lines changed: 16 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Build/Resources/xlf/Strings.fr.xlf

Lines changed: 16 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Build/Resources/xlf/Strings.it.xlf

Lines changed: 16 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)