dotnet / dotnet/msbuild

Document that assembly version should change for .NET Framework tasks

Open
#12,333 0 comments 0 reactions 0 assignees View on GitHub
Area: Documentation triaged
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 8h
Merged PRs (30d)
141

Description

As a consequence of .NET Framework assembly-load rules and MSBuild using long-lived processes to host tasks for performance, you can hit a surprising behavior:

1. Build, loading a task from `x:\NuGet\taskpackage\1.0.0\task.dll`, to get `Task, Version=0.0.0.0`
2. update projects (or NuGet package references)
3. Build, attempting the load from `x:\NuGet\taskpackage\2.2.2\task.dll`
4. But you're still using the task from 1!

That happens if the assembly identity doesn't change between NuGet package versions--so when we call `Assembly.LoadFrom`, .NET Framework just says "sure you got it" and hands us back the old version.

As a consequence, task authors should have distinct assembly versions between releases.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.