-
Notifications
You must be signed in to change notification settings - Fork 258
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 needs to support dependencies specific to target runtime #1660
Comments
WCF has a need for this as I need to add a dependency to WinHttpHandler for Windows only. |
@mconnew are you sure https://docs.nuget.org/create/uwp-create doesn't give you enough tools already? |
I'm already packaging up Matt's stuff with runtime specific packages, but its an example of a set of libraries that don't belong in the ".NET Standard" but need to have platform specific implementations. I think WCF benefit from this feature rather than putting the platform-specific implementation information in the framework's lineup (runtime.json). |
Ping. Where is this at on the priority list? Would you like to get together and work on a spec? |
Lets talk today. Right now I don't see it happening in Dec, but we can talk further Sent from my Windows Phone From: Eric StJohnmailto:[email protected] Ping. Where is this at on the priority list? Would you like to get together and work on a spec? — |
Packages with ref and lib list all their dependencies in a single section for that target framework. This creates a couple problems: 1. Folks end up taking a dependency on the fact that a package happens to use another package in its implementation. 2. For packages that have multiple implementations for the same TFM and different RID all dependencies appear in the same section even though some may be RID specific. Those RID speicific dependencies will compatibility errors during restore since the packages won't be supported on all RIDs. In lieu of the NuGet feature to represent RID-specific dependencies NuGet/Home#1660 we can at least suppress the compatibility error by excluding these implementation specific depdencies from compile. Further details are here: dotnet/buildtools@d40435b#diff-abe065d40d7c72dbdc1ad1957148d23fR14 [tfs-changeset: 1581170]
Packages with ref and lib list all their dependencies in a single section for that target framework. This creates a couple problems: 1. Folks end up taking a dependency on the fact that a package happens to use another package in its implementation. 2. For packages that have multiple implementations for the same TFM and different RID all dependencies appear in the same section even though some may be RID specific. Those RID speicific dependencies will compatibility errors during restore since the packages won't be supported on all RIDs. In lieu of the NuGet feature to represent RID-specific dependencies NuGet/Home#1660 we can at least suppress the compatibility error by excluding these implementation specific depdencies from compile. Further details are here: dotnet/buildtools@d40435b#diff-abe065d40d7c72dbdc1ad1957148d23fR14 [tfs-changeset: 1581170]
@ericstj - going through old issues. Still an issue? |
Yes. Though it's more of a feature. Right now NuGet provides no way for a package to expose different API nor dependencies based on runtime. It's not blocking us but it is a gap that has come up quite a few times. |
+1 |
Considering this is possibly a breaking change, any chance this makes it to NuGet 5.0/VS2019? |
Hi, |
While it doesn't scale at all if you want to start to support multiples RID at least the limitation is now documented 😞 @DevTeam think of the combinatory explosion |
Packages with ref and lib list all their dependencies in a single section for that target framework. This creates a couple problems: 1. Folks end up taking a dependency on the fact that a package happens to use another package in its implementation. 2. For packages that have multiple implementations for the same TFM and different RID all dependencies appear in the same section even though some may be RID specific. Those RID speicific dependencies will compatibility errors during restore since the packages won't be supported on all RIDs. In lieu of the NuGet feature to represent RID-specific dependencies NuGet/Home#1660 we can at least suppress the compatibility error by excluding these implementation specific depdencies from compile. Further details are here: https://github.com/dotnet/buildtools/commit/dotnet/corefx@d40435b1c460416768cc53a27091e57d948be171#diff-abe065d40d7c72dbdc1ad1957148d23fR14 [tfs-changeset: 1581170] Commit migrated from dotnet/corefx@5a26b24
Currently there is no way to represent dependencies that are specific to a library under runtimes/{rid}/lib/{tfm}. This made since when RID was only used for architecture, now that RID also represents OS platform it does not. There are entire packages/technologies that will only exist on a certain OS and folks will need to build fat-packages that depend on these.
I met with @davidfowl, @yishaigalatzer, @anurse, @Eilon, and @lodejard on 10/6 and we came up with the following:
Sounds like a good feature. Doesn’t replace runtime.json, solves a different problem.
A couple different options for representation:
We’d need to make sure that it has the right interaction with runtime.json if that is also in play.
The text was updated successfully, but these errors were encountered: