@@ -133,6 +133,17 @@ public DependencyManager(string srcDir, IDependencyOptions options, ILogger logg
133
133
logger . LogInfo ( $ "{ conflictedReferences , align } resolved assembly conflicts") ;
134
134
logger . LogInfo ( $ "{ dotnetFrameworkVersionVariantCount , align } restored .NET framework variants") ;
135
135
logger . LogInfo ( $ "Build analysis completed in { DateTime . Now - startTime } ") ;
136
+
137
+ CompilationInfos . AddRange ( [
138
+ ( "Source files on filesystem" , nonGeneratedSources . Count . ToString ( ) ) ,
139
+ ( "Source files generated" , generatedSources . Count . ToString ( ) ) ,
140
+ ( "Solution files on filesystem" , allSolutions . Count . ToString ( ) ) ,
141
+ ( "Project files on filesystem" , allProjects . Count . ToString ( ) ) ,
142
+ ( "Resolved references" , usedReferences . Keys . Count . ToString ( ) ) ,
143
+ ( "Unresolved references" , unresolvedReferences . Count . ToString ( ) ) ,
144
+ ( "Resolved assembly conflicts" , conflictedReferences . ToString ( ) ) ,
145
+ ( "Restored .NET framework variants" , dotnetFrameworkVersionVariantCount . ToString ( ) ) ,
146
+ ] ) ;
136
147
}
137
148
138
149
private HashSet < string > AddFrameworkDlls ( HashSet < string > dllPaths )
@@ -151,7 +162,13 @@ private void RestoreNugetPackages(List<FileInfo> allNonBinaryFiles, IEnumerable<
151
162
try
152
163
{
153
164
var nuget = new NugetPackages ( sourceDir . FullName , legacyPackageDirectory , logger ) ;
154
- nuget . InstallPackages ( ) ;
165
+ var count = nuget . InstallPackages ( ) ;
166
+
167
+ if ( nuget . PackageCount > 0 )
168
+ {
169
+ CompilationInfos . Add ( ( "packages.config files" , nuget . PackageCount . ToString ( ) ) ) ;
170
+ CompilationInfos . Add ( ( "Successfully restored packages.config files" , count . ToString ( ) ) ) ;
171
+ }
155
172
156
173
var nugetPackageDlls = legacyPackageDirectory . DirInfo . GetFiles ( "*.dll" , new EnumerationOptions { RecurseSubdirectories = true } ) ;
157
174
var nugetPackageDllPaths = nugetPackageDlls . Select ( f => f . FullName ) . ToHashSet ( ) ;
@@ -629,6 +646,11 @@ private void ResolveConflicts(IEnumerable<string> frameworkPaths)
629
646
/// </summary>
630
647
public IEnumerable < string > UnresolvedReferences => unresolvedReferences . Select ( r => r . Key ) ;
631
648
649
+ /// <summary>
650
+ /// List of `(key, value)` tuples, that are stored in the DB for telemetry purposes.
651
+ /// </summary>
652
+ public List < ( string , string ) > CompilationInfos { get ; } = new List < ( string , string ) > ( ) ;
653
+
632
654
/// <summary>
633
655
/// Record that a particular reference couldn't be resolved.
634
656
/// Note that this records at most one project file per missing reference.
@@ -699,15 +721,22 @@ private void AnalyseProject(FileInfo project)
699
721
/// <param name="solutions">A list of paths to solution files.</param>
700
722
private IEnumerable < string > RestoreSolutions ( IEnumerable < string > solutions , out IEnumerable < string > assets )
701
723
{
724
+ var successCount = 0 ;
702
725
var assetFiles = new List < string > ( ) ;
703
726
var projects = solutions . SelectMany ( solution =>
704
727
{
705
728
logger . LogInfo ( $ "Restoring solution { solution } ...") ;
706
729
var res = dotnet . Restore ( new ( solution , packageDirectory . DirInfo . FullName , ForceDotnetRefAssemblyFetching : true ) ) ;
730
+ if ( res . Success )
731
+ {
732
+ successCount ++ ;
733
+ }
707
734
assetFiles . AddRange ( res . AssetsFilePaths ) ;
708
735
return res . RestoredProjects ;
709
- } ) ;
736
+ } ) . ToList ( ) ;
710
737
assets = assetFiles ;
738
+ CompilationInfos . Add ( ( "Successfully restored solution files" , successCount . ToString ( ) ) ) ;
739
+ CompilationInfos . Add ( ( "Restored projects through solution files" , projects . Count . ToString ( ) ) ) ;
711
740
return projects ;
712
741
}
713
742
@@ -719,14 +748,24 @@ private IEnumerable<string> RestoreSolutions(IEnumerable<string> solutions, out
719
748
/// <param name="projects">A list of paths to project files.</param>
720
749
private void RestoreProjects ( IEnumerable < string > projects , out IEnumerable < string > assets )
721
750
{
751
+ var successCount = 0 ;
722
752
var assetFiles = new List < string > ( ) ;
753
+ var sync = new object ( ) ;
723
754
Parallel . ForEach ( projects , new ParallelOptions { MaxDegreeOfParallelism = options . Threads } , project =>
724
755
{
725
756
logger . LogInfo ( $ "Restoring project { project } ...") ;
726
757
var res = dotnet . Restore ( new ( project , packageDirectory . DirInfo . FullName , ForceDotnetRefAssemblyFetching : true ) ) ;
727
- assetFiles . AddRange ( res . AssetsFilePaths ) ;
758
+ lock ( sync )
759
+ {
760
+ if ( res . Success )
761
+ {
762
+ successCount ++ ;
763
+ }
764
+ assetFiles . AddRange ( res . AssetsFilePaths ) ;
765
+ }
728
766
} ) ;
729
767
assets = assetFiles ;
768
+ CompilationInfos . Add ( ( "Successfully restored project files" , successCount . ToString ( ) ) ) ;
730
769
}
731
770
732
771
private void DownloadMissingPackages ( List < FileInfo > allFiles , ISet < string > dllPaths )
@@ -767,6 +806,11 @@ private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPa
767
806
logger . LogInfo ( $ "Using nuget.config file { nugetConfig } .") ;
768
807
}
769
808
809
+ CompilationInfos . Add ( ( "Fallback nuget restore" , notYetDownloadedPackages . Count . ToString ( ) ) ) ;
810
+
811
+ var successCount = 0 ;
812
+ var sync = new object ( ) ;
813
+
770
814
Parallel . ForEach ( notYetDownloadedPackages , new ParallelOptions { MaxDegreeOfParallelism = options . Threads } , package =>
771
815
{
772
816
logger . LogInfo ( $ "Restoring package { package } ...") ;
@@ -797,10 +841,18 @@ private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPa
797
841
if ( ! res . Success )
798
842
{
799
843
logger . LogInfo ( $ "Failed to restore nuget package { package } ") ;
844
+ return ;
800
845
}
801
846
}
847
+
848
+ lock ( sync )
849
+ {
850
+ successCount ++ ;
851
+ }
802
852
} ) ;
803
853
854
+ CompilationInfos . Add ( ( "Successfully ran fallback nuget restore" , successCount . ToString ( ) ) ) ;
855
+
804
856
dllPaths . Add ( missingPackageDirectory . DirInfo . FullName ) ;
805
857
}
806
858
0 commit comments