@@ -152,7 +152,8 @@ private static (MSB.Evaluation.Project? project, DiagnosticLog log) LoadProjectC
152
152
{
153
153
var projectCollection = new MSB . Evaluation . ProjectCollection (
154
154
AllGlobalProperties ,
155
- _msbuildLogger != null ? [ _msbuildLogger ] : ImmutableArray < MSB . Framework . ILogger > . Empty ,
155
+ // https://github.com/dotnet/msbuild/issues/11867: workaround LoggerException when passing binary logger to both evaluation and build
156
+ loggers : [ ] ,
156
157
MSB . Evaluation . ToolsetDefinitionLocations . Default ) ;
157
158
try
158
159
{
@@ -171,18 +172,26 @@ private static (MSB.Evaluation.Project? project, DiagnosticLog log) LoadProjectC
171
172
var log = new DiagnosticLog ( ) ;
172
173
try
173
174
{
174
- var projectCollection = new MSB . Evaluation . ProjectCollection (
175
- AllGlobalProperties ,
176
- _msbuildLogger != null ? [ _msbuildLogger ] : ImmutableArray < MSB . Framework . ILogger > . Empty ,
177
- MSB . Evaluation . ToolsetDefinitionLocations . Default ) ;
178
- try
175
+ if ( BatchBuildStarted )
179
176
{
180
- return LoadProjectCore ( path , readStream , projectCollection , log ) ;
177
+ return LoadProjectCore ( path , readStream , _batchBuildProjectCollection , log ) ;
181
178
}
182
- finally
179
+ else
183
180
{
184
- // unload project so collection will release global strings
185
- projectCollection . UnloadAllProjects ( ) ;
181
+ var projectCollection = new MSB . Evaluation . ProjectCollection (
182
+ AllGlobalProperties ,
183
+ // https://github.com/dotnet/msbuild/issues/11867: workaround LoggerException when passing binary logger to both evaluation and build
184
+ loggers : [ ] ,
185
+ MSB . Evaluation . ToolsetDefinitionLocations . Default ) ;
186
+ try
187
+ {
188
+ return LoadProjectCore ( path , readStream , projectCollection , log ) ;
189
+ }
190
+ finally
191
+ {
192
+ // unload project so collection will release global strings
193
+ projectCollection . UnloadAllProjects ( ) ;
194
+ }
186
195
}
187
196
}
188
197
catch ( Exception e )
@@ -228,7 +237,8 @@ public void StartBatchBuild(IDictionary<string, string>? globalProperties = null
228
237
? [ _msbuildLogger ]
229
238
: ImmutableArray < MSB . Framework . ILogger > . Empty ;
230
239
231
- _batchBuildProjectCollection = new MSB . Evaluation . ProjectCollection ( allProperties , loggers , MSB . Evaluation . ToolsetDefinitionLocations . Default ) ;
240
+ // Pass empty loggers array to workaround LoggerException when passing binary logger to both evaluation and build. See https://github.com/dotnet/msbuild/issues/11867
241
+ _batchBuildProjectCollection = new MSB . Evaluation . ProjectCollection ( allProperties , loggers : [ ] , MSB . Evaluation . ToolsetDefinitionLocations . Default ) ;
232
242
233
243
var buildParameters = new MSB . Execution . BuildParameters ( _batchBuildProjectCollection )
234
244
{
0 commit comments