Closed
Description
Issue Description
[Ported from AB#1790945]
Tasks that run in a .NET 3.5 task host and return metadata fail with MSB4028.
Steps to Reproduce
- Install NetFx3.5
- Install VS 2022 Preview 3 (I’m on VisualStudio.17.int.d17.6/17.6.0-pre.3.0+33603.384.d17.6)
- Install WiX311 toolset (https://github.com/wixtoolset/wix3/releases/tag/wix3112rtm)
- Open VS developer command prompt and go to the folder where the WiX project is
msbuild
Expected Behavior
Project build fine
Actual Behavior
error MSB4028: The “GenerateCompileWithObjectPath” task’s outputs could not be retrieved from the “CompileWithObjectPath” parameter. Specified cast is not valid.
Analysis
Stack at break:
System.Core.dll!System.Linq.Enumerable.CastIterator<System.Collections.Generic.KeyValuePair<string, string>>(System.Collections.IEnumerable source) Line 1039 C#
System.Core.dll!System.Linq.Enumerable.WhereSelectEnumerableIterator<System.Collections.Generic.KeyValuePair<string, string>, System.Collections.Generic.KeyValuePair<string, string>>.MoveNext() Line 396 C#
System.Core.dll!System.Linq.Enumerable.WhereSelectEnumerableIterator<System.Collections.Generic.KeyValuePair<string, string>, Microsoft.Build.Execution.ProjectMetadataInstance>.MoveNext() Line 396 C#
> Microsoft.Build.dll!Microsoft.Build.Collections.CopyOnWritePropertyDictionary<Microsoft.Build.Execution.ProjectMetadataInstance>.ImportProperties.__Items|0() Line 294 C#
System.Collections.Immutable.dll!System.Collections.Immutable.ImmutableDictionary<string, Microsoft.Build.Execution.ProjectMetadataInstance>.AddRange(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, Microsoft.Build.Execution.ProjectMetadataInstance>> items, System.Collections.Immutable.ImmutableDictionary<string, Microsoft.Build.Execution.ProjectMetadataInstance>.MutationInput origin, System.Collections.Immutable.ImmutableDictionary<string, Microsoft.Build.Execution.ProjectMetadataInstance>.KeyCollisionBehavior collisionBehavior) Line 956 C#
System.Collections.Immutable.dll!System.Collections.Immutable.ImmutableDictionary<string, Microsoft.Build.Execution.ProjectMetadataInstance>.SetItems(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, Microsoft.Build.Execution.ProjectMetadataInstance>> items) Line 337 C#
Microsoft.Build.dll!Microsoft.Build.Collections.CopyOnWritePropertyDictionary<Microsoft.Build.Execution.ProjectMetadataInstance>.ImportProperties(System.Collections.Generic.IEnumerable<Microsoft.Build.Execution.ProjectMetadataInstance> other) Line 290 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TaskExecutionHost.GatherTaskItemOutputs(bool outputTargetIsItem, string outputTargetName, Microsoft.Build.Framework.ITaskItem[] outputs, Microsoft.Build.Construction.ElementLocation parameterLocation, Microsoft.Build.Framework.TaskPropertyInfo parameter) Line 1399 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.GatherTaskOutputs(string parameterName, Microsoft.Build.Construction.ElementLocation parameterLocation, bool outputTargetIsItem, string outputTargetName) Line 432 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TaskBuilder.GatherTaskOutputs(Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask, Microsoft.Build.BackEnd.ItemBucket bucket) Line 1142 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(Microsoft.Build.BackEnd.ITaskExecutionHost taskExecutionHost, Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) Line 978 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TaskBuilder.InitializeAndExecuteTask(Microsoft.Build.BackEnd.Logging.TaskLoggingContext taskLoggingContext, Microsoft.Build.BackEnd.ItemBucket bucket, System.Collections.Generic.IDictionary<string, string> taskIdentityParameters, Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask) Line 660 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TaskBuilder.ExecuteBucket(Microsoft.Build.BackEnd.TaskHost taskHost, Microsoft.Build.BackEnd.ItemBucket bucket, Microsoft.Build.BackEnd.TaskExecutionMode howToExecuteTask, System.Collections.Generic.Dictionary<string, string> lookupHash) Line 443 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(Microsoft.Build.BackEnd.TaskExecutionMode mode, Microsoft.Build.BackEnd.Lookup lookup) Line 332 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(Microsoft.Build.BackEnd.Logging.TargetLoggingContext loggingContext, Microsoft.Build.BackEnd.BuildRequestEntry requestEntry, Microsoft.Build.BackEnd.ITargetBuilderCallback targetBuilderCallback, Microsoft.Build.Execution.ProjectTargetInstanceChild taskInstance, Microsoft.Build.BackEnd.TaskExecutionMode mode, Microsoft.Build.BackEnd.Lookup inferLookup, Microsoft.Build.BackEnd.Lookup executeLookup, System.Threading.CancellationToken cancellationToken) Line 184 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TargetEntry.ProcessBucket(Microsoft.Build.BackEnd.ITaskBuilder taskBuilder, Microsoft.Build.BackEnd.Logging.TargetLoggingContext targetLoggingContext, Microsoft.Build.BackEnd.TaskExecutionMode mode, Microsoft.Build.BackEnd.Lookup lookupForInference, Microsoft.Build.BackEnd.Lookup lookupForExecution) Line 805 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TargetEntry.ExecuteTarget(Microsoft.Build.BackEnd.ITaskBuilder taskBuilder, Microsoft.Build.BackEnd.BuildRequestEntry requestEntry, Microsoft.Build.BackEnd.Logging.ProjectLoggingContext projectLoggingContext, System.Threading.CancellationToken cancellationToken) Line 501 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TargetBuilder.ProcessTargetStack(Microsoft.Build.BackEnd.ITaskBuilder taskBuilder) Line 485 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.TargetBuilder.BuildTargets(Microsoft.Build.BackEnd.Logging.ProjectLoggingContext loggingContext, Microsoft.Build.BackEnd.BuildRequestEntry entry, Microsoft.Build.BackEnd.IRequestBuilderCallback callback, string[] targetNames, Microsoft.Build.BackEnd.Lookup baseLookup, System.Threading.CancellationToken cancellationToken) Line 165 C#
Microsoft.Build.dll!Microsoft.Build.BackEnd.RequestBuilder.BuildProject() Line 1228 C#
Versions & Configurations
Working version of msbuild: MSBuild version 17.6.0-preview-23122-03+f93b24b5a for .NET Framework - 17.6.0.12203)
Broken version of msbuild: (MSBuild version 17.6.0+61dd65684 for .NET Framework; 17.6.0.18004)