Skip to content

Commit 3966664

Browse files
Get compilable
1 parent b113149 commit 3966664

3 files changed

Lines changed: 9 additions & 23 deletions

File tree

CommandLine/CodeConv.Shared/CodeConvProgram.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ private async Task ConvertAsync(IProgress<ConversionProgress> progress, Cancella
150150

151151
var properties = ParsedProperties();
152152
var joinableTaskFactory = new JoinableTaskFactory(new JoinableTaskContext());
153-
var msbuildWorkspaceConverter = new MsBuildWorkspaceConverter(finalSolutionPath, CoreOnlyProjects, joinableTaskFactory, BestEffort, properties);
153+
var msbuildWorkspaceConverter = new MsBuildWorkspaceConverter(joinableTaskFactory, finalSolutionPath, BestEffort, properties);
154154

155155
var converterResultsEnumerable = msbuildWorkspaceConverter.ConvertProjectsWhereAsync(ShouldIncludeProject, TargetLanguage, progress, cancellationToken);
156156
await ConversionResultWriter.WriteConvertedAsync(converterResultsEnumerable, finalSolutionPath, outputDirectory, Force, true, strProgress, cancellationToken);

CommandLine/CodeConv.Shared/MSBuildWorkspaceConverter.cs

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Collections.Immutable;
43
using System.ComponentModel.DataAnnotations;
54
using System.Diagnostics;
6-
using System.IO;
75
using System.Linq;
86
using System.Runtime.CompilerServices;
97
using System.Text;
108
using System.Threading;
119
using System.Threading.Tasks;
12-
using ICSharpCode.CodeConverter;
1310
using ICSharpCode.CodeConverter.Common;
1411
using ICSharpCode.CodeConverter.CSharp;
1512
using ICSharpCode.CodeConverter.Util;
1613
using ICSharpCode.CodeConverter.VB;
1714
using Microsoft.CodeAnalysis;
18-
using Microsoft.CodeAnalysis.Diagnostics;
1915
using Microsoft.CodeAnalysis.MSBuild;
2016
using Microsoft.VisualStudio.Threading;
2117

@@ -26,27 +22,26 @@ namespace ICSharpCode.CodeConverter.CommandLine;
2622
/// </summary>
2723
public sealed class MsBuildWorkspaceConverter
2824
{
25+
private readonly JoinableTaskFactory _joinableTaskFactory;
2926
private readonly SolutionLoader _solutionLoader;
3027
private AsyncLazy<Solution>? _cachedSolution;
3128

3229
// The other parameters are ignored for compatibility
33-
public MsBuildWorkspaceConverter(string solutionFilePath, bool bestEffortConversion = false, Dictionary<string, string>? buildProps = null)
30+
public MsBuildWorkspaceConverter(JoinableTaskFactory joinableTaskFactory, string solutionFilePath, bool bestEffortConversion = false, Dictionary<string, string>? buildProps = null)
3431
{
32+
_joinableTaskFactory = joinableTaskFactory;
3533
_solutionLoader = new SolutionLoader(solutionFilePath, bestEffortConversion, buildProps);
3634
}
3735

3836

3937
public async IAsyncEnumerable<ConversionResult> ConvertProjectsWhereAsync(Func<Project, bool> shouldConvertProject, Language? targetLanguage, IProgress<ConversionProgress> progress, [EnumeratorCancellation] CancellationToken token)
4038
{
4139
var strProgress = new Progress<string>(s => progress.Report(new ConversionProgress(s)));
42-
#pragma warning disable VSTHRD012 // Provide JoinableTaskFactory where allowed - Shouldn't need main thread, and I can't access ThreadHelper without referencing VS shell.
43-
_cachedSolution ??= new AsyncLazy<Solution>(async () => await _solutionLoader.AnalyzeSolutionAsync(strProgress));
44-
#pragma warning restore VSTHRD012 // Provide JoinableTaskFactory where allowed
40+
_cachedSolution ??= new AsyncLazy<Solution>(async () => await _solutionLoader.AnalyzeSolutionAsync(strProgress), _joinableTaskFactory);
41+
4542
var solution = await _cachedSolution.GetValueAsync(token);
4643

47-
if (!targetLanguage.HasValue) {
48-
targetLanguage = solution.Projects.Any(p => p.Language == LanguageNames.VisualBasic) ? Language.CS : Language.VB;
49-
}
44+
targetLanguage ??= solution.Projects.Any(p => p.Language == LanguageNames.VisualBasic) ? Language.CS : Language.VB;
5045

5146
var languageConversion = targetLanguage == Language.CS
5247
? (ILanguageConversion)new VBToCSConversion()
@@ -89,17 +84,8 @@ public async Task<Solution> AnalyzeSolutionAsync(IProgress<string> progress, str
8984
};
9085

9186
using var workspace = MSBuildWorkspace.Create(properties);
92-
workspace.WorkspaceFailed += HandleWorkspaceFailure;
9387

94-
Solution solution;
95-
try
96-
{
97-
solution = await workspace.OpenSolutionAsync(_solutionFilePath);
98-
}
99-
finally
100-
{
101-
workspace.WorkspaceFailed -= HandleWorkspaceFailure;
102-
}
88+
Solution solution = await workspace.OpenSolutionAsync(_solutionFilePath);
10389

10490
var errorString = await GetCompilationErrorsAsync(workspace, solution.Projects);
10591
if (string.IsNullOrEmpty(errorString)) return solution;

Tests/TestRunners/MultiFileTestFixture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public sealed class MultiFileTestFixture : ICollectionFixture<MultiFileTestFixtu
4141
private static readonly string MultiFileCharacterizationDir = Path.Combine(TestConstants.GetTestDataDirectory(), "MultiFileCharacterization");
4242
private static readonly string OriginalSolutionDir = Path.Combine(MultiFileCharacterizationDir, "SourceFiles");
4343
private static readonly string SolutionFile = Path.Combine(OriginalSolutionDir, "CharacterizationTestSolution.sln");
44-
private static readonly MsBuildWorkspaceConverter _msBuildWorkspaceConverter = new(SolutionFile, false, JoinableTaskFactorySingleton.EnsureInitialized());
44+
private static readonly MsBuildWorkspaceConverter _msBuildWorkspaceConverter = new(JoinableTaskFactorySingleton.EnsureInitialized(), SolutionFile, false);
4545

4646
public async Task ConvertProjectsWhereAsync(Func<Project, bool> shouldConvertProject, Language targetLanguage, [CallerMemberName] string expectedResultsDirectory = "")
4747
{

0 commit comments

Comments
 (0)