-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Closed
Labels
Area: EngineIssues impacting the core execution of targets and tasks.Issues impacting the core execution of targets and tasks.Area: TaskHosttriaged
Description
Today, if you have a task that is built for 32-bit or 64-bit, but does not specify architecture in its UsingTask, you get an error message:
S:\work\cross-arch-tasks\TaskUse.proj(8,5): error MSB4062: The "Task32" task
could not be loaded from the assembly
S:\work\cross-arch-tasks\Task32\bin\Debug\net472\Task32.dll. Could not load file
or assembly
'file:///S:\work\cross-arch-tasks\Task32\bin\Debug\net472\Task32.dll' or one of
its dependencies. An attempt was made to load a program with an incorrect
format. Confirm that the <UsingTask> declaration is correct, that the assembly
and all its dependencies are available, and that the task contains a public
class that implements Microsoft.Build.Framework.ITask.
This isn't very actionable.
MSBuild could examine the task assembly before loading it and infer an Architecture requirement if the assembly isn't MSIL. If we don't infer, we could at least emit a more-specific error message like
The task assembly XXX specifies the x86 architecture but the currently-loaded .NET runtime is x64. Consider adding an
Architecturerequirement to theUsingTask.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Area: EngineIssues impacting the core execution of targets and tasks.Issues impacting the core execution of targets and tasks.Area: TaskHosttriaged