Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Having multiple experiments now breaks the "All" solution #180

Closed
mrlacey opened this issue Jun 30, 2022 · 3 comments · Fixed by #185
Closed

Having multiple experiments now breaks the "All" solution #180

mrlacey opened this issue Jun 30, 2022 · 3 comments · Fixed by #185

Comments

@mrlacey
Copy link
Contributor

mrlacey commented Jun 30, 2022

As part of investigating #179

I created 2 new experiments with the classic version and 2 with the backed.
I then generated the All solution.
The All solution didn't compile. :(
I then went to the main branch, cleaned everything, and generated two experiments there.
I then regenerated the All solution.
That doesn't compile either.
So, I deleted one of the newly created experiments and regenerated the All solution.
This did build. :)

So, it looks like there's something from #167 that causes All not to work when there are multiple experiments generated from the template.
At a guess, I'd assume that something that needs to be unique in each experiment isn't.
However, the error messages suggest that the source generators aren't producing the expected output and this is causing the Uno SourceGenerator to fail. This then leads to the other SG not running.

Generation failed: System.AggregateException: One or more errors occurred. ---> System.InvalidOperationException: Generation failed for Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGenerator. System.AggregateException: One or more errors occurred. ---> System.Exception: Processing failed for file C:\github\CommunityToolkit\Labs-Windows\common\CommunityToolkit.Labs.Shared\App.xaml (System.InvalidOperationException: The reference C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll could not be found in C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateResourceLoader(IndentedStringBuilder writer) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 673
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildApplicationInitializerBody(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 585
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildInitializeComponent(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl, INamedTypeSymbol controlBaseType, Boolean isDirectUserControlChild) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 522
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.InnerGenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 473
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 338) ---> System.InvalidOperationException: The reference C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll could not be found in C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateResourceLoader(IndentedStringBuilder writer) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 673
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildApplicationInitializerBody(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 585
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildInitializeComponent(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl, INamedTypeSymbol controlBaseType, Boolean isDirectUserControlChild) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 522
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.InnerGenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 473
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 338
   --- End of inner exception stack trace ---
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 346
   at Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGeneration.<>c__DisplayClass40_0.<Generate>b__1(XamlFileDefinition file) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlCodeGeneration.cs:line 297
   at System.Linq.Parallel.PartitionedDataSource`1.ListContiguousIndexRangeEnumerator.MoveNext(T& currentElement, Int32& currentKey)
   at System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork()
   at System.Linq.Parallel.SpoolingTaskBase.Work()
   at System.Linq.Parallel.QueryTask.BaseWork(Object unused)
   at System.Threading.Tasks.Task.Execute()
   --- End of inner exception stack trace ---
   at System.Linq.Parallel.QueryTaskGroupState.QueryEnd(Boolean userInitiatedDispose)
   at System.Linq.Parallel.DefaultMergeHelper`2.System.Linq.Parallel.IMergeHelper<TInputOutput>.Execute()
   at System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId)
   at System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream)
   at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient)
   at System.Linq.Parallel.QueryOperator`1.GetOpenedEnumerator(Nullable`1 mergeOptions, Boolean suppressOrder, Boolean forEffect, QuerySettings querySettings)
   at System.Linq.Parallel.QueryOpeningEnumerator`1.OpenQuery()
   at System.Linq.Parallel.QueryOpeningEnumerator`1.MoveNext()
   at System.Linq.ParallelEnumerable.ToList[TSource](ParallelQuery`1 source)
   at Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGeneration.Generate(GenerationRunInfo generationRunInfo) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlCodeGeneration.cs:line 349
   at Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGenerator.Execute(GeneratorExecutionContext context) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlCodeGenerator.cs:line 43
   at Uno.SourceGeneration.Host.SourceGeneratorEngine.<>c__DisplayClass4_1.<Generate>b__13(ValueTuple`3 generatorDef) in D:\a\1\s\src\Uno.SourceGeneration.Engine.Shared\SourceGeneratorEngine.cs:line 226
---> (Inner Exception #0) System.Exception: Processing failed for file C:\github\CommunityToolkit\Labs-Windows\common\CommunityToolkit.Labs.Shared\App.xaml (System.InvalidOperationException: The reference C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll could not be found in C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateResourceLoader(IndentedStringBuilder writer) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 673
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildApplicationInitializerBody(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 585
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildInitializeComponent(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl, INamedTypeSymbol controlBaseType, Boolean isDirectUserControlChild) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 522
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.InnerGenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 473
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 338) ---> System.InvalidOperationException: The reference C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll could not be found in C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateResourceLoader(IndentedStringBuilder writer) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 673
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildApplicationInitializerBody(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 585
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildInitializeComponent(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl, INamedTypeSymbol controlBaseType, Boolean isDirectUserControlChild) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 522
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.InnerGenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 473
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 338
   --- End of inner exception stack trace ---
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 346
   at Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGeneration.<>c__DisplayClass40_0.<Generate>b__1(XamlFileDefinition file) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlCodeGeneration.cs:line 297
   at System.Linq.Parallel.PartitionedDataSource`1.ListContiguousIndexRangeEnumerator.MoveNext(T& currentElement, Int32& currentKey)
   at System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork()
   at System.Linq.Parallel.SpoolingTaskBase.Work()
   at System.Linq.Parallel.QueryTask.BaseWork(Object unused)
   at System.Threading.Tasks.Task.Execute()<---

   at Uno.SourceGeneration.Host.SourceGeneratorEngine.<>c__DisplayClass4_1.<Generate>b__13(ValueTuple`3 generatorDef) in D:\a\1\s\src\Uno.SourceGeneration.Engine.Shared\SourceGeneratorEngine.cs:line 243
   at System.Linq.Parallel.SelectQueryOperator`2.SelectQueryOperatorEnumerator`1.MoveNext(TOutput& currentElement, TKey& currentKey)
   at System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork()
   at System.Linq.Parallel.SpoolingTaskBase.Work()
   at System.Linq.Parallel.QueryTask.BaseWork(Object unused)
   at System.Threading.Tasks.Task.Execute()
   --- End of inner exception stack trace ---

Server stack trace: 
   at System.Linq.Parallel.QueryTaskGroupState.QueryEnd(Boolean userInitiatedDispose)
   at System.Linq.Parallel.DefaultMergeHelper`2.System.Linq.Parallel.IMergeHelper<TInputOutput>.Execute()
   at System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId)
   at System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream)
   at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.ChildResultsRecipient.Receive[TKey](PartitionedStream`2 inputStream)
   at System.Linq.Parallel.ScanQueryOperator`1.ScanEnumerableQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient)
   at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient)
   at System.Linq.Parallel.QueryOperator`1.ExecuteAndGetResultsAsArray()
   at Uno.SourceGeneration.Host.SourceGeneratorEngine.Generate() in D:\a\1\s\src\Uno.SourceGeneration.Engine.Shared\SourceGeneratorEngine.cs:line 166
   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Uno.SourceGeneratorTasks.RemoteSourceGeneratorEngine.Generate(RemotableLogger2 logger, BuildEnvironment environment)
   at Uno.SourceGeneration.Host.Server.GenerationServerHost.GenerateForCollection(EnvironmentPool collection, BuildEnvironment environment) in D:\a\1\s\src\Uno.SourceGeneration.Host\Server\GenerationServerHost.netframework.cs:line 61
   at Uno.SourceGeneration.Host.Server.GenerationServerHost.RunGeneration(RunRequest request, CancellationToken cancellationToken) in D:\a\1\s\src\Uno.SourceGeneration.Host\Server\GenerationServerHost.cs:line 73
---> (Inner Exception #0) System.InvalidOperationException: Generation failed for Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGenerator. System.AggregateException: One or more errors occurred. ---> System.Exception: Processing failed for file C:\github\CommunityToolkit\Labs-Windows\common\CommunityToolkit.Labs.Shared\App.xaml (System.InvalidOperationException: The reference C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll could not be found in C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateResourceLoader(IndentedStringBuilder writer) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 673
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildApplicationInitializerBody(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 585
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildInitializeComponent(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl, INamedTypeSymbol controlBaseType, Boolean isDirectUserControlChild) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 522
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.InnerGenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 473
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 338) ---> System.InvalidOperationException: The reference C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll could not be found in C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateResourceLoader(IndentedStringBuilder writer) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 673
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildApplicationInitializerBody(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 585
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildInitializeComponent(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl, INamedTypeSymbol controlBaseType, Boolean isDirectUserControlChild) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 522
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.InnerGenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 473
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 338
   --- End of inner exception stack trace ---
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 346
   at Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGeneration.<>c__DisplayClass40_0.<Generate>b__1(XamlFileDefinition file) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlCodeGeneration.cs:line 297
   at System.Linq.Parallel.PartitionedDataSource`1.ListContiguousIndexRangeEnumerator.MoveNext(T& currentElement, Int32& currentKey)
   at System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork()
   at System.Linq.Parallel.SpoolingTaskBase.Work()
   at System.Linq.Parallel.QueryTask.BaseWork(Object unused)
   at System.Threading.Tasks.Task.Execute()
   --- End of inner exception stack trace ---
   at System.Linq.Parallel.QueryTaskGroupState.QueryEnd(Boolean userInitiatedDispose)
   at System.Linq.Parallel.DefaultMergeHelper`2.System.Linq.Parallel.IMergeHelper<TInputOutput>.Execute()
   at System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId)
   at System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream)
   at System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient)
   at System.Linq.Parallel.QueryOperator`1.GetOpenedEnumerator(Nullable`1 mergeOptions, Boolean suppressOrder, Boolean forEffect, QuerySettings querySettings)
   at System.Linq.Parallel.QueryOpeningEnumerator`1.OpenQuery()
   at System.Linq.Parallel.QueryOpeningEnumerator`1.MoveNext()
   at System.Linq.ParallelEnumerable.ToList[TSource](ParallelQuery`1 source)
   at Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGeneration.Generate(GenerationRunInfo generationRunInfo) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlCodeGeneration.cs:line 349
   at Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGenerator.Execute(GeneratorExecutionContext context) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlCodeGenerator.cs:line 43
   at Uno.SourceGeneration.Host.SourceGeneratorEngine.<>c__DisplayClass4_1.<Generate>b__13(ValueTuple`3 generatorDef) in D:\a\1\s\src\Uno.SourceGeneration.Engine.Shared\SourceGeneratorEngine.cs:line 226
---> (Inner Exception #0) System.Exception: Processing failed for file C:\github\CommunityToolkit\Labs-Windows\common\CommunityToolkit.Labs.Shared\App.xaml (System.InvalidOperationException: The reference C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll could not be found in C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateResourceLoader(IndentedStringBuilder writer) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 673
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildApplicationInitializerBody(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 585
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildInitializeComponent(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl, INamedTypeSymbol controlBaseType, Boolean isDirectUserControlChild) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 522
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.InnerGenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 473
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 338) ---> System.InvalidOperationException: The reference C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll could not be found in C:\github\CommunityToolkit\Labs-Windows\labs\CanvasLayout\samples\CanvasLayout.Sample\bin\Debug\netstandard2.0\CanvasLayout.Sample.dll
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateResourceLoader(IndentedStringBuilder writer) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 673
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildApplicationInitializerBody(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 585
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.BuildInitializeComponent(IndentedStringBuilder writer, XamlObjectDefinition topLevelControl, INamedTypeSymbol controlBaseType, Boolean isDirectUserControlChild) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 522
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.InnerGenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 473
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 338
   --- End of inner exception stack trace ---
   at Uno.UI.SourceGenerators.XamlGenerator.XamlFileGenerator.GenerateFile() in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlFileGenerator.cs:line 346
   at Uno.UI.SourceGenerators.XamlGenerator.XamlCodeGeneration.<>c__DisplayClass40_0.<Generate>b__1(XamlFileDefinition file) in C:\a\1\s\src\SourceGenerators\Uno.UI.SourceGenerators\XamlGenerator\XamlCodeGeneration.cs:line 297
   at System.Linq.Parallel.PartitionedDataSource`1.ListContiguousIndexRangeEnumerator.MoveNext(T& currentElement, Int32& currentKey)
   at System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork()
   at System.Linq.Parallel.SpoolingTaskBase.Work()
   at System.Linq.Parallel.QueryTask.BaseWork(Object unused)
   at System.Threading.Tasks.Task.Execute()<---

   at Uno.SourceGeneration.Host.SourceGeneratorEngine.<>c__DisplayClass4_1.<Generate>b__13(ValueTuple`3 generatorDef) in D:\a\1\s\src\Uno.SourceGeneration.Engine.Shared\SourceGeneratorEngine.cs:line 243
   at System.Linq.Parallel.SelectQueryOperator`2.SelectQueryOperatorEnumerator`1.MoveNext(TOutput& currentElement, TKey& currentKey)
   at System.Linq.Parallel.StopAndGoSpoolingTask`2.SpoolingWork()
   at System.Linq.Parallel.SpoolingTaskBase.Work()
   at System.Linq.Parallel.QueryTask.BaseWork(Object unused)
   at System.Threading.Tasks.Task.Execute()<---
@Arlodotexe
Copy link
Member

It appears that the error originates here, an ArgumentException with the message "An item with the same key has already been added."

var sampleMetadata = toolkitSampleAttributeData
.ToDictionary(
sample => sample.Attribute.Id,
sample =>
new ToolkitSampleRecord(
sample.Attribute.Id,
sample.Attribute.DisplayName,
sample.Attribute.Description,
sample.AttachedQualifiedTypeName,
optionsPaneAttribute.FirstOrDefault(x => x.Item1?.SampleId == sample.Attribute.Id).Item2?.ToString(),
generatedOptionPropertyData.Where(x => ReferenceEquals(x.Item1, sample.Symbol)).Select(x => x.Item2)
)
);

Cobbling together a quick snippet to find which items caused it:

data.Left.Left.Left.Right.GroupBy(x => x.Attribute.Id).Where(x => x.Count() > 1).Select(x=> x.Key)

Looks like these items have duplicate sample Ids:
image

Since all samples across all experiments end up in the same registry and aren't separated by assembly, you can't use the same sample name more than once anywhere in labs.

@michael-hawker If this is the intended behavior, I'll move forward with the fixes:

  • Write an improved error message
  • Rename these to use ProjectTemplate instead of TemplatedControl (so this stops happening)
  • Write tests for the new error message

@michael-hawker michael-hawker added this to In progress in Labs Launch Jul 5, 2022
@Arlodotexe
Copy link
Member

Arlodotexe commented Jul 5, 2022

I've fixed this issue locally and created a new analyzer with an improved error message, but I'm not able to write unit tests for that diagnostic error (yet).

This particular test requires you to apply a generator to an assembly, and check symbols in all referenced assemblies. Our unit tests here are, in their current form, lacking the flexibility required to pull this off.

I can do a small refactor and add the flexibility needed to accommodate this and future unit tests for our primary source generator (CommunityToolkit.Labs.Core.SourceGenerators), but it'll take a few more hours of work.

@michael-hawker
Copy link
Member

Let's split out improving the source generator test suite until after launch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
3 participants