Skip to content

Commit eff011b

Browse files
authored
Fix: Build problems when running .NET 6 version of docfx on some environment (#9922)
Fix: Build failed when targeting .NET6 on some environment
1 parent 1231df9 commit eff011b

File tree

3 files changed

+55
-8
lines changed

3 files changed

+55
-8
lines changed

Directory.Packages.props

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,6 @@
1010
<PackageVersion Include="Jint" Version="3.1.0" />
1111
<PackageVersion Include="JsonSchema.Net" Version="7.0.1" />
1212
<PackageVersion Include="Markdig" Version="0.37.0" />
13-
<PackageVersion Include="Microsoft.CodeAnalysis" Version="4.9.2" />
14-
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.9.2" />
15-
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.9.2" />
16-
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.9.2" />
17-
<PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="4.9.2" />
18-
<PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic" Version="4.9.2" />
19-
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="4.9.2" />
20-
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="4.9.2" />
2113
<PackageVersion Include="Microsoft.Playwright" Version="1.43.0" />
2214
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
2315
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
@@ -31,6 +23,34 @@
3123
<PackageVersion Include="System.Collections.Immutable" Version="8.0.0" />
3224
<PackageVersion Include="System.Composition" Version="8.0.0" />
3325
<PackageVersion Include="YamlDotNet" Version="15.1.4" />
26+
</ItemGroup>
27+
28+
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
29+
<!-- "17.3.2" is the latest compatible version for .NET 6 -->
30+
<PackageVersion Include="Microsoft.Build" Version="[17.3.2]" />
31+
<PackageVersion Include="Microsoft.Build.Locator" Version="1.7.8" />
32+
<PackageVersion Include="Microsoft.CodeAnalysis" Version="[4.8.0]" />
33+
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="[4.8.0]" />
34+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="[4.8.0]" />
35+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="[4.8.0]" />
36+
<PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="[4.8.0]" />
37+
<PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic" Version="[4.8.0]" />
38+
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="[4.8.0]" />
39+
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="[4.8.0]" />
40+
</ItemGroup>
41+
42+
<ItemGroup Condition="'$(TargetFramework)' != 'net6.0'">
43+
<PackageVersion Include="Microsoft.CodeAnalysis" Version="4.9.2" />
44+
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.9.2" />
45+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.9.2" />
46+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.9.2" />
47+
<PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="4.9.2" />
48+
<PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic" Version="4.9.2" />
49+
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="4.9.2" />
50+
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="4.9.2" />
51+
</ItemGroup>
52+
53+
<ItemGroup>
3454
<!-- Test only -->
3555
<PackageVersion Include="coverlet.collector" Version="6.0.2" />
3656
<PackageVersion Include="FluentAssertions" Version="6.12.0" />

src/Docfx.Dotnet/Docfx.Dotnet.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828
<ProjectReference Include="..\Docfx.Plugins\Docfx.Plugins.csproj" />
2929
</ItemGroup>
3030

31+
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
32+
<PackageReference Include="Microsoft.Build" ExcludeAssets="runtime" />
33+
<PackageReference Include="Microsoft.Build.Locator" />
34+
</ItemGroup>
35+
3136
<ItemGroup>
3237
<PackageReference Include="HtmlAgilityPack" />
3338
<PackageReference Include="ICSharpCode.Decompiler" />

src/Docfx.Dotnet/DotnetApiCatalog.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ internal static async Task Exec(MetadataJsonConfig config, DotnetApiOptions opti
5757
{
5858
var stopwatch = Stopwatch.StartNew();
5959

60+
EnsureMSBuildLocator();
61+
6062
try
6163
{
6264
string originalGlobalNamespaceId = VisitorHelper.GlobalNamespaceId;
@@ -122,6 +124,26 @@ void WriteYaml(string outputFolder, string id, Build.ApiPage.ApiPage apiPage)
122124
}
123125
}
124126

127+
private static void EnsureMSBuildLocator()
128+
{
129+
#if NET6_0
130+
try
131+
{
132+
if (!Microsoft.Build.Locator.MSBuildLocator.IsRegistered)
133+
{
134+
var vs = Microsoft.Build.Locator.MSBuildLocator.RegisterDefaults() ?? throw new Docfx.Exceptions.ExtractMetadataException(
135+
$"Cannot find a supported .NET Core SDK. Install .NET Core SDK {Environment.Version.Major}.{Environment.Version.Minor}.x to build .NET API docs.");
136+
137+
Logger.LogInfo($"Using {vs.Name} {vs.Version}");
138+
}
139+
}
140+
catch (Exception e)
141+
{
142+
throw new Docfx.Exceptions.ExtractMetadataException(e.Message, e);
143+
}
144+
#endif
145+
}
146+
125147
private static ExtractMetadataConfig ConvertConfig(MetadataJsonItemConfig configModel, string configDirectory, string outputDirectory)
126148
{
127149
var projects = configModel.Src;

0 commit comments

Comments
 (0)