Skip to content

Commit d72fcd0

Browse files
committed
More build fixes
- Trace warning when falling back to reflection - Maybe the SDK will load the right versions of DotNetDocs in the right SDK environments this time.
1 parent 3c67baa commit d72fcd0

2 files changed

Lines changed: 29 additions & 4 deletions

File tree

src/CloudNimble.DotNetDocs.Sdk/Sdk/Sdk.targets

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,22 @@
1212

1313
<!-- Determine which task assembly to load based on MSBuild runtime -->
1414
<PropertyGroup>
15-
<!-- Determine the target framework for tasks based on MSBuild runtime -->
16-
<_DotNetDocsTaskFramework Condition="'$(MSBuildRuntimeType)' == 'Core'">net8.0</_DotNetDocsTaskFramework>
1715
<_DotNetDocsTaskFramework Condition="'$(MSBuildRuntimeType)' == 'Full'">net472</_DotNetDocsTaskFramework>
16+
17+
<!-- For .NET Core MSBuild, match task TFM to the runtime major version -->
18+
<_DotNetDocsRuntimeMajor Condition="'$(MSBuildRuntimeType)' == 'Core'">$([System.Environment]::Version.Major)</_DotNetDocsRuntimeMajor>
19+
<_DotNetDocsTaskFramework Condition="'$(MSBuildRuntimeType)' == 'Core'">net$(_DotNetDocsRuntimeMajor).0</_DotNetDocsTaskFramework>
20+
21+
<!-- Fallback if runtime detection fails -->
1822
<_DotNetDocsTaskFramework Condition="'$(_DotNetDocsTaskFramework)' == ''">net8.0</_DotNetDocsTaskFramework>
19-
23+
2024
<!-- Tasks are always loaded from the packaged location -->
2125
<_DotNetDocsTasksFolder>$(MSBuildThisFileDirectory)..\tasks\$(_DotNetDocsTaskFramework)</_DotNetDocsTasksFolder>
2226
<_DotNetDocsTasksAssembly>$(_DotNetDocsTasksFolder)\CloudNimble.DotNetDocs.Sdk.Tasks.dll</_DotNetDocsTasksAssembly>
27+
28+
<!-- If version-matched tasks don't exist, fall back to net8.0 -->
29+
<_DotNetDocsTasksFolder Condition="!Exists('$(_DotNetDocsTasksAssembly)')">$(MSBuildThisFileDirectory)..\tasks\net8.0</_DotNetDocsTasksFolder>
30+
<_DotNetDocsTasksAssembly Condition="!Exists('$(_DotNetDocsTasksAssembly)')">$(_DotNetDocsTasksFolder)\CloudNimble.DotNetDocs.Sdk.Tasks.dll</_DotNetDocsTasksAssembly>
2331
</PropertyGroup>
2432

2533
<!-- Load compiled MSBuild tasks when they exist -->
@@ -43,6 +51,8 @@
4351

4452
<!-- Documentation project validation and information -->
4553
<Target Name="ValidateDocumentationProject" BeforeTargets="Build">
54+
<Message Text="🔧 DotNetDocs SDK task runtime: .NET $(_DotNetDocsRuntimeMajor) → $(_DotNetDocsTaskFramework)" Importance="high" Condition="'$(_DotNetDocsRuntimeMajor)' != ''" />
55+
<Message Text="🔧 DotNetDocs SDK task runtime: .NET Framework → $(_DotNetDocsTaskFramework)" Importance="high" Condition="'$(_DotNetDocsRuntimeMajor)' == ''" />
4656
<Message Text="✅ Documentation project: $(MSBuildProjectName)" Importance="high" />
4757
<Message Text="📄 Documentation type: $(DocumentationType)" Importance="high" />
4858
<Message Text="📂 Documentation root: $(DocumentationRoot)" Importance="high" Condition="'$(DocumentationRoot)' != '$(MSBuildProjectDirectory)\'" />

src/Mintlify.Core/MintlifyConstants.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System;
2+
using System.Diagnostics;
13
using System.Text.Json;
24
using System.Text.Json.Serialization;
35
using Mintlify.Core.Converters;
@@ -51,7 +53,20 @@ private static JsonSerializerOptions CreateOptions()
5153
}
5254
};
5355
#if NET8_0_OR_GREATER
54-
options.TypeInfoResolverChain.Insert(0, MintlifyJsonContext.Default);
56+
try
57+
{
58+
options.TypeInfoResolverChain.Insert(0, MintlifyJsonContext.Default);
59+
}
60+
catch (Exception ex)
61+
{
62+
// Source-generated context may fail in constrained runtime environments
63+
// (e.g., MSBuild task host with assembly version conflicts).
64+
// Fall back to reflection-based serialization.
65+
Trace.TraceError(
66+
"MintlifyJsonContext.Default failed to initialize. " +
67+
"Falling back to reflection-based serialization. " +
68+
"Error: {0}", ex);
69+
}
5570
#endif
5671
return options;
5772
}

0 commit comments

Comments
 (0)