-
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
NuGet.Packaging assemblies don't load for Feed package publishing #1965
Comments
Maybe the title should be update to latest nuget version. |
Hey @wli3, help me understand your process.
Depending on which of this you are using we'll know what's the best followy up is. |
only arcade version |
What version of the package are you using? |
Change the title to use nuget 5.0.0-rtm.5821 and up. That is the root cause of the problem. NuGet has a breaking change to moved the dll nuget.packaging.core.dll |
@JohnTortugo can you explain why you put this in the FR epic? |
Not sure @MattGal . Today it looks more like an Arcade issue though. |
OK with no FR details or followup for us, I am removing the epic tag; please ping me if you feel this was in error. |
@jcagme - what are the next steps here? |
I don't know what's the latest from @wli3. We could update the version although I don't know why would we take a dependency on a RTM package. |
@wli3 - thoughts on next steps? |
Closing based on lack of responses |
Sorry for the delay. CLI and SDK repo workaround this issue with painful product change(3 weeks). However, nuget version past 5.0.0-rtm.5821 has a breaking change of moving types. It might still cause problem like build task failure or cross gen that is similar to CLI and SDK repo. So I suggest Arcade to upgrade ASAP in case the problem appear before final release and we have to fit it in rush |
Reopening as we just got bitten by this in AspNetCore-Tooling: dotnet/aspnetcore#18324. @wli3 can you comment on how you worked around this in CLI/SDK? @markwilkie @jcagme can we update to a newer version of nuget.client to unblock upstack repos? I think anyone using a new SDK with a new Arcade will be broken. Here's the call that fails: arcade/src/Microsoft.DotNet.Build.Tasks.Feed/src/PublishArtifactsInManifest.cs Lines 994 to 996 in be2d4ae
|
@wtgodbe Is arcade depending on another component that depends on NuGet, or it depends on NuGet directly. If it's the first one, you can add NuGet.Packaging.Core as a reference, it has type forwarding. |
Assuming Arcade, the .net sdk needs to be updated to get a new nuget.exe. I seem to recall that this happened already (but I don't know for sure). So perhaps this build is getting nuget from elsewhere somehow? Or, perhaps the sdk doesn't have the latest one? cc/ @mmitche |
Whereas Arcade uses Nuget.Versioning version 4.4.0, Nuget.Client version 5.3.0: Lines 42 to 43 in be2d4ae
|
Nuget.Versioning 4.4.0 is from 2017 - it appears we use that version because anything newer would conflict with the MSBuild version used by the SDK: #2189. The SDK now uses MSBuild version |
Here's the internal Arcade build with my branch: https://dev.azure.com/dnceng/internal/_build/results?buildId=484408 |
Last time nuget added type forwarding, so it passed. I don't know the cause of this time. |
I see - yes, we can (and should) update these versions. @mmitche, any thoughts on not having more than one place where we're defining the nuget version? |
I'm not sure how we would get the SDK's nuget version...but primarily I was concerned about two copies of nuget.exe itself. Maybe @tmat has some ideas here? |
@wtgodbe where is a link to the actual fix that you built that off of? Looking through the thread I just see a build, not a PR. |
Here it is, I just bumped |
Updating the
I'll try adding a direct reference to Nuget.Packaging.Core |
I have a local repro. Sleet might be a red herring. It appears that the conflict is between Arcade's feed package using NuGet v 5.3.0.4 and dotnet loading v5.5.0.1. I don't see any older versions of NuGet being loaded. I'm continuing to investigate. |
The SDK first updated it's nuget dependency to 5.5 in december, which lines up with the timeline of when the bug started occuring (extensions uses an SDK from november and doesn't have this issue): dotnet/toolset#3735 |
Yes, I don't have a solution yet. The failure does correspond with that change. There is a conflict between the NuGet which comes with the Arcade Feed package and the one in the dotnet sdk. Updating Arcade to the same version of NuGet doesn't fix the issue (I'd presume some types moved and an additional package reference is needed to make the Arcade Feed package work). Removing NuGet assemblies from the Feed package seems to allow .net core to load from its sdk and things work.... I'm still investigating, and don't have an optimal solution at the moment. @nguerrera , does this sound reasonable? I wonder if we can build the feed package and exclude NuGet assemblies from the package on core. |
cc @dsplaisted. @chcosta I didn't follow what exactly that entails. Do you have a change we can review? |
Are you saying you can remove your dependency on NuGet altogether? |
Update, just saw this info on my GitHub page and realized I hadn't hit the "Comment" button like I intended to yesterday. Posting this, and then I'll add an additional update with the latest.
|
@nguerrera noticed that the sdk repo is already building with dotnet/msbuild#4916 and that corresponds with the symptoms being seen here. Assembly isolation is likely causing this problem since not all NuGet packages are being loaded. The quickest fix would be to update |
For folks following this issue, the conversation somehow got onto email. (hence the lack of apparent activity on this issue). Currently @rainersigwald and @chcosta are working through both the closest path to unblock as well as the longer term solution. This is a very high priority item. |
I'm in the process of trying to validate an interim solution using an updated Arcade SDK in a dotnet-sdk build. Unfortunately, I don't think there's an easy way to validate the publishing step itself apart from an update to master, so the current validation build is more of a sanity check. I'll prepare a PR with the interim solution. |
Working with @wtgodbe to validate the change in an aspnetcore build. |
Workaround available: Arcade SDK @wtgodbe ran a build of aspnetcore-tooling that used the one-off Arcade SDK I produced and it appears to be a viable workaround. I actually think it's probably fine for us to just make this change in Arcade (even though it's a hack). I'll submit a PR to Arcade but anyone that needs to unblock themselves can use the Arcade version listed above. Meanwhile, the current theory is that MSBuild is not loading some assemblies because of its strict version matching. @rainersigwald is continuing to investigate. |
Woohoo! Once the workaround is in Arcade I'll make sure the new version gets pushed to aspnetcore-tooling/sdk |
Sounds good, also, there's no reason you can't use the workaround version as I produced that from an official build (not my local dev box). whichever is necessary to unblock you. |
@chcosta doesn't appear to have worked in master: https://dev.azure.com/dnceng/internal/_build/results?buildId=496713 |
@wtgodbe, can you use the version I listed above? That's the version I validated. The other version merged into master *should * be the same, but I haven't validated it yet. 😕 |
Additionally, it looks like my change is in the 5.0.0-beta.20074.6 arcade sdk but you got the build before. Do now that I still haven't validated the package contents yet though |
Looks like the build is passing with the latest arcade sdk https://dev.azure.com/dnceng/internal/_build/results?buildId=496755&view=results |
After the sleet removal, we should be able to remove a long standing workound that required that the arcade SDK load a very old version on NuGet.Versioning because of a conflicting dependency with sleet. I have unified the references under NuGet.Packaging's version, so that source-build can properly override the NuGet version. The relevant issues around the old workaround are dotnet#6014 and dotnet#1965
After the sleet removal, we should be able to remove a long standing workound that required that the arcade SDK load a very old version on NuGet.Versioning because of a conflicting dependency with sleet. I have unified the references under NuGet.Packaging's version, so that source-build can properly override the NuGet version. The relevant issues around the old workaround are dotnet#6014 and dotnet#1965
After the sleet removal, we should be able to remove a long standing workound that required that the arcade SDK load a very old version on NuGet.Versioning because of a conflicting dependency with sleet. I have unified the references under NuGet.Packaging's version, so that source-build can properly override the NuGet version. The relevant issues around the old workaround are #6014 and #1965
After the sleet removal, we should be able to remove a long standing workound that required that the arcade SDK load a very old version on NuGet.Versioning because of a conflicting dependency with sleet. I have unified the references under NuGet.Packaging's version, so that source-build can properly override the NuGet version. The relevant issues around the old workaround are dotnet/arcade#6014 and dotnet/arcade#1965 Original commit: dotnet/arcade@3900335 [[ commit created by automation ]]
The latest nuget package has a breaking change removing NuGet.Packaging.Core, and moving types to NuGet.Packaging. sdk should be the first one taking that change. As a result, arcade failed to publish.
failed publish
https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=2379512
The text was updated successfully, but these errors were encountered: