-
Notifications
You must be signed in to change notification settings - Fork 347
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
Update System.Reflection.Metadata to 6.0.1 #10516
Comments
Sorry, how would this work and why is it necessary❔ dotnet/aspnetcore gets its Put another way, why not use dependency flow everywhere❔ |
With the issues with assembly loading and binding redirects on desktop MSBuild/VS, we generally end up needing to align SRM versions to some level to avoid conflicts around the System.Collections.Immutable.dll assembly version or we cause breaks in the SDK. |
|
Unsure if that would work for the Visual Studio case. @rainersigwald @marcpopMSFT do you know the package version requirements for VS components? |
VS is fairly flexible on when it can update dependencies AFAIK but it can be a long process of onion-peeling to get them in--I generally have to coordinate with @jaredpar and @AArnott and get review from several teams that have dependencies. However, I'm not sure that the SDK version needs to match the MSBuild/VS version. .NET Framework should be able to load assemblies of different versions side-by-side, and there should not be any SRM types in public interfaces between the SDK and MSBuild (MSBuild doesn't expose any that I know of). As such, as long as the .NET Framework copy of SRM.dll is in the SDK's .NET Framework tasks folder, it should be able to freely update to runtime-latest. @am11 was that not the case? |
For major releases it's still an onion-peeling effort but overall I think we have a decent handle on the problem. Basically it's a slog but we know the path we have to take. Servicing fixes are a different problem entirely because the runtime uses different assembly versions for the different binaries. The When we initially looked at inserting SRM 6.0.0.1 into Visual Studio @AArnott had a PR where he'd attempted to do something similar. But we looked at it and decided the amount of work involved was very high and it was probably cheaper to just wait for |
VS actually does have multiple versions of many assemblies (too many, in fact). We're meeting regularly now to try to reduce both the duplication of the same version of assemblies and the span of versions that a given assembly simple name has. But in the meantime, nothing stops .NET 6 processes from having and sharing another version of the assembly. |
Please correct me if I'm wrong but I think we're discussing two different problems. The problem I believe you're discussing is when two teams pick two different versions of a NuPkg. For example team one picks Awesome.Util version 1.0 and team two picks Awesome.Util version 2.0. This overall bloats the install size of Visual Studio, increases complexity because we're juggling more dependencies, etc ... It's a problem that can be fixed simply by the two teams agreeing on a single version. The problem I'm discussing is when everyone agrees on a single version of a package: SRM 6.0.0.1. The problem is the implementation of that NuPkg uses different assembly versions based on the TFM chosen. In this case Potentially we could fix it by saying that we use the |
Ah, ok. We do have this problem already (I think with S.C.I.) We solve it be applying a binding redirects that includes the backwards element. For example: I agree with what I think @jaredpar is saying, that we should always ship the runtime-specific build of an assembly for loading into a running process instead of something else like netstandard, which could potentially be meant as a ref assembly since the runtime assembly is expected to always be chosen for runtime. |
Arcade was not designed to enforce versions of packages used in the individual product repos. Repos will need to coordinate with each other to make sure that their versions of this package are aligned. |
Updating System.Reflection.Metadata requires extra care and coordination in several repositories, since VS, MSBuild, Roslyn, SDK and HostModel from runtime rely on it. Currently most reprostories are at 6.0.0, while runtime is moved to 6.0.1, arcade is at 1.6.1 and aspnetcore has switched to 7.0 rc1. This is to unify its version to 6.0.1 so we stay on the latest patch of v6 band.
cc @ViktorHofer, @jkoritzinsky
context: dotnet/runtime#74231 (comment)
The text was updated successfully, but these errors were encountered: