-
Notifications
You must be signed in to change notification settings - Fork 80
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
Transitive dependency issues in single-component UWP head #169
Comments
Wondering if it's because Behaviors directly references Extensions (which is also needed by the app) vs. the transitive inclusion of it elsewhere? That could be something to investigate with the all the issues we've had with duplicate ProjectReferences... I also saw that if I only added Animations as a reference in Behaviors, instead of also re-adding Extensions and the HeaderedControls in the VS Project Reference dialog that I got this message:
Which I hadn't seen before, so not sure if that's also something related or not to maybe the underlying issue of what's happening here? It definitely seems related to UWP and the old-project style vs. new. Maybe we should investigate upgrading Or at least if we can repro it outside as a minimal repro we can compare with and without it to see if that's a starting point? |
The test UWP head has the same issue as well... however, adding the references manually doesn't seem to be helping...
|
Hitting this exact problem with |
Additional information found during testing of the latest 8.1-rc. It's worth noting that when consuming the nuget packages, installing the Media package doesn't automatically reference the transitive dependency on Animations, and this behavior is unexpected. In order to reproduce any sample code from the Media component in our gallery, an end user application needs to install both Media and Behaviors, with Behaviors providing a transient dependency on Animations, but not Media. The transient dependency in Media on Animations is not picked up when Media is used via the NuGet package. This is doubly unexpected because in the OP, we found that installing only Behaviors doesn't provide a transient dependency to Animations, contradicting what happened here (installing Behaviors did add a transient dependency to Animations). Possibly the fault of the Animations component and not the component that references it? |
Worth noting our use of If our use of We might want to go through and see if we can remove the need for these |
Considering |
Until there's a clear path forward for resolving this for non-sdk style projects, I'm moving this back to "blocked". |
I feel like something similar was preventing me from building the Sample Gallery in release mode for WinUI 3 as well? |
Problem
Single-component solutions are facing a transitive dependency issue on UWP heads. It can be fixed by making the transitive dependency an explicit dependency, but not all transitive dependencies are problematic. This ticket serves to investigate why this is happening, and what we can do about it.
Findings
Behaviors.Uwp.csproj
project requires an explicit reference to theAnimations
project to build successfully, even thoughAnimations
is a transitive dependency. This behavior is not observed in theSettingsControls.Uwp.csproj
project.Uwp
->Behaviors
->Animations
->Extensions
. Had to manually add a direct reference fromUwp
toAnimations
(but notExtensions
for some reason) to fix the build issue.Uwp
->SettingsControl
->Triggers
->Helpers
->Extensions
. No issue building.Task Analysis:
Touch
task (related to file timestamp updates) inSettingsControls.Uwp.csproj
and not inBehaviors.Uwp.csproj
were noted, but aren't relevant to the issue.MSBuild Task Parameters:
MSBuild
tasks were extracted and compared between the two components.Hypotheses and Proposed Experiments:
Helpers
) in theSettingsControls
chain might influence transitive dependency resolution.Behaviors
source project has two dependencies that should be available transiently to the Uwp head, while theSettingsControls
source project only has one. It's possible that the reference fromBehaviors.Uwp
toAnimations
was needed but the reference toExtensions
wasn't because it can only resolve one transient reference.Recommendations
We'll need to finish investigation to find out why the transitive dependencies are working fine in
SettingsControls
but notBehaviors
. If we adjust the Behaviors project reference structure to match certain characteristics of the SettingsControls project graph, it may yield the information needed to file a proper bug report and create a workaround.Possible next steps:
The text was updated successfully, but these errors were encountered: