1- namespace ReferenceTrimmer . Shared ;
1+ using System . Text ;
2+
3+ namespace ReferenceTrimmer . Shared ;
24
35internal record DeclaredReferences ( IReadOnlyList < DeclaredReference > References )
46{
@@ -22,18 +24,28 @@ internal record DeclaredReferences(IReadOnlyList<DeclaredReference> References)
2224
2325 public void SaveToFile ( string filePath )
2426 {
25- using FileStream stream = File . Create ( filePath ) ;
26- using StreamWriter writer = new ( stream ) ;
27-
27+ StringBuilder writer = new ( ) ;
2828 foreach ( DeclaredReference reference in References )
2929 {
30- writer . Write ( reference . AssemblyPath ) ;
31- writer . Write ( FieldDelimiter ) ;
32- writer . Write ( KindEnumToString [ reference . Kind ] ) ;
33- writer . Write ( FieldDelimiter ) ;
34- writer . Write ( reference . Spec ) ;
35- writer . WriteLine ( ) ;
30+ writer . Append ( reference . AssemblyPath ) ;
31+ writer . Append ( FieldDelimiter ) ;
32+ writer . Append ( KindEnumToString [ reference . Kind ] ) ;
33+ writer . Append ( FieldDelimiter ) ;
34+ writer . Append ( reference . Spec ) ;
35+ writer . AppendLine ( ) ;
36+ }
37+
38+ string newContent = writer . ToString ( ) ;
39+ if ( File . Exists ( filePath ) )
40+ {
41+ string existing = File . ReadAllText ( filePath ) ;
42+ if ( string . Equals ( existing , newContent , StringComparison . OrdinalIgnoreCase ) )
43+ {
44+ return ;
45+ }
3646 }
47+
48+ File . WriteAllText ( filePath , newContent ) ;
3749 }
3850
3951 public static DeclaredReferences ReadFromFile ( string filePath )
0 commit comments