Skip to content
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

Add support for exact version NuGet dependencies #769

Closed
wants to merge 1 commit into from

Conversation

jpobst
Copy link
Contributor

@jpobst jpobst commented Aug 1, 2023

Context: #764

Today, binderator enforces "exact dependencies" specified in POM files. If you do not fulfill them you get this error:

System.Exception: 
No matching artifact config found for: 
    androidx.preference.preference:[1.2.0]
to satisfy dependency of: 
    androidx.preference.preference-ktx:1.2.0

However, when we create NuGets we ignore this requirement and instead allow a "greater than or equal to" dependency. When types move from one package to another and the package versions are not kept locked, it can result in errors like Type androidx.lifecycle.DispatchQueue is defined multiple times. (#764)

A wrinkle is that we use <ProjectReference> to create our dependency tree and it does not currently support specifying an "exact" version dependency. NuGet/Home#5556

A workaround is to use a custom target in Directory.Build.targets that allows a ExactVersion="true" attribute to be added to a <ProjectReference>. This attribute is then taken into account when NuGet pack is run.

This should help mitigate future errors caused by types moving between Java packages that should always have synced versions.

@jpobst jpobst marked this pull request as ready for review August 1, 2023 15:52
@jpobst jpobst marked this pull request as draft August 1, 2023 15:52
@jpobst jpobst force-pushed the exact-versions branch 2 times, most recently from bc30534 to ee504d6 Compare August 1, 2023 16:33
@jpobst jpobst closed this Aug 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant