[external/Java.Interop] Remove standalone-repo scaffolding after merge - #11943
Merged
jonathanpeppers merged 1 commit intoJul 1, 2026
Merged
Conversation
Follow-up to #11942 (which handled `external/Java.Interop/.github/`). Delete files under `external/Java.Interop/` that are byte-duplicates of top-level files or orphans from the pre-merge standalone repo layout. Deleted: * `product.snk` -- byte-identical to top-level `product.snk` * `CODE-OF-CONDUCT.md` -- identical boilerplate to top-level * `SECURITY.md` -- near-duplicate of top-level, with a stale link to the Xamarin support policy * `.gitmodules` -- redundant; top-level `.gitmodules` already has the same submodule entry * `Java.Interop.code-workspace` -- 6-line VS Code workspace file from the standalone repo, no references * `Makefile` -- standalone-repo GNU makefile; not referenced by top-level CI, `build.sh`, `build.cmd`, `eng/`, `build-tools/`, `Documentation/`, or the JI Azure DevOps templates in `external/Java.Interop/build-tools/automation/`. The 9 csprojs that previously signed against `external/Java.Interop/product.snk` via `..\..\product.snk` now use a new `$(ProductSnkPath)` property defined in `external/Java.Interop/Directory.Build.props`: <ProductSnkPath>$(MSBuildThisFileDirectory)..\..\product.snk</ProductSnkPath> which resolves to the top-level `product.snk`. Verified locally: * `dotnet msbuild ... -getProperty:AssemblyOriginatorKeyFile,ProductSnkPath` reports the resolved path pointing at the top-level `product.snk`. * `dotnet build external/Java.Interop/Java.Interop.sln -t:Prepare` succeeds. * `dotnet build external/Java.Interop/src/Java.Interop/Java.Interop.csproj` succeeds and the resulting `Java.Interop.dll` reports the expected `84e04ff9cfb79065` public key token. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Removes leftover standalone-repo scaffolding under external/Java.Interop/ after the Java.Interop merge, and retargets Java.Interop project signing to use the repo-root product.snk rather than a duplicated copy.
Changes:
- Introduces
$(ProductSnkPath)inexternal/Java.Interop/Directory.Build.propspointing to the repo-rootproduct.snk. - Updates 9 Java.Interop projects/tests to sign using
$(ProductSnkPath)instead of a relative path to a now-deleted duplicate key. - Deletes redundant/orphaned standalone-repo files (
SECURITY.md,CODE-OF-CONDUCT.md, nested.gitmodules,Makefile, VS Code workspace).
Reviewed changes
Copilot reviewed 15 out of 16 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| external/Java.Interop/Directory.Build.props | Adds ProductSnkPath property resolving to repo-root product.snk. |
| external/Java.Interop/src/Java.Interop/Java.Interop.csproj | Uses $(ProductSnkPath) for AssemblyOriginatorKeyFile. |
| external/Java.Interop/src/Java.Interop.Localization/Java.Interop.Localization.csproj | Uses $(ProductSnkPath) for signing key. |
| external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csproj | Uses $(ProductSnkPath) for signing key. |
| external/Java.Interop/src/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csproj | Uses $(ProductSnkPath) for signing key. |
| external/Java.Interop/src/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csproj | Uses $(ProductSnkPath) for signing key. |
| external/Java.Interop/src/Java.Interop.Tools.Maven/Java.Interop.Tools.Maven.csproj | Uses $(ProductSnkPath) for signing key. |
| external/Java.Interop/src/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csproj | Uses $(ProductSnkPath) for signing key. |
| external/Java.Interop/tests/Java.Interop-Tests/Java.Interop-Tests.csproj | Uses $(ProductSnkPath) for signing key. |
| external/Java.Interop/tests/TestJVM/TestJVM.csproj | Uses $(ProductSnkPath) for signing key. |
| external/Java.Interop/SECURITY.md | Deleted redundant/stale security policy file. |
| external/Java.Interop/CODE-OF-CONDUCT.md | Deleted duplicate Code of Conduct file. |
| external/Java.Interop/.gitmodules | Deleted redundant nested .gitmodules. |
| external/Java.Interop/Java.Interop.code-workspace | Deleted orphaned VS Code workspace file. |
| external/Java.Interop/Makefile | Deleted orphaned standalone-repo Makefile. |
simonrozsival
approved these changes
Jul 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #11942, which handles
external/Java.Interop/.github/. This PR is round 2: delete files underexternal/Java.Interop/that are byte-duplicates of top-level files, or orphans left over from the pre-merge standalone-repo layout.Files deleted
external/Java.Interop/product.snkproduct.snk(SHA256708EA5D6…AAB160).external/Java.Interop/CODE-OF-CONDUCT.mdCODE-OF-CONDUCT.md.external/Java.Interop/SECURITY.mdSECURITY.md, with a stale link to the Xamarin support policy.external/Java.Interop/.gitmodules.gitmodulesalready has theexternal/Java.Interop/external/xamarin-android-toolssubmodule entry.external/Java.Interop/Java.Interop.code-workspaceexternal/Java.Interop/Makefileproduct.snkretargetingNine JI csprojs previously set
<AssemblyOriginatorKeyFile>..\..\product.snk</AssemblyOriginatorKeyFile>— resolving toexternal/Java.Interop/product.snk(the now-deleted duplicate). They now use a new shared property defined inexternal/Java.Interop/Directory.Build.props:which resolves to the top-level
product.snk. Each of the 9 csprojs now says<AssemblyOriginatorKeyFile>$(ProductSnkPath)</AssemblyOriginatorKeyFile>.Csprojs retargeted:
src/Java.Interop/Java.Interop.csprojsrc/Java.Interop.Localization/Java.Interop.Localization.csprojsrc/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil.csprojsrc/Java.Interop.Tools.Diagnostics/Java.Interop.Tools.Diagnostics.csprojsrc/Java.Interop.Tools.JavaCallableWrappers/Java.Interop.Tools.JavaCallableWrappers.csprojsrc/Java.Interop.Tools.Maven/Java.Interop.Tools.Maven.csprojsrc/Xamarin.Android.Tools.Bytecode/Xamarin.Android.Tools.Bytecode.csprojtests/Java.Interop-Tests/Java.Interop-Tests.csprojtests/TestJVM/TestJVM.csprojMakefile orphaned check
Before deleting, I grepped the whole tree for callers of
external/Java.Interop/Makefile:Java\.Interop.Makefileunder top-levelMakefile,build.sh,build.cmd,eng/,build-tools/, orDocumentation/.make -C external/Java.Interopormake.*Java.Interopanywhere in the repo.dotnet build external/Java.Interop/Java.Interop.sln(seeexternal/Java.Interop/build-tools/automation/templates/core-build.yaml, referenced frombuild-tools/automation/yaml-templates/stage-java-interop-tests.yaml), never viamake.Verification
dotnet msbuild external/Java.Interop/src/Java.Interop/Java.Interop.csproj -getProperty:AssemblyOriginatorKeyFile,ProductSnkPathreports both properties resolving to…\external\Java.Interop\..\..\product.snk(i.e. the top-level key).dotnet build external/Java.Interop/Java.Interop.sln -t:Prepare -c Debug— succeeds.dotnet build external/Java.Interop/src/Java.Interop/Java.Interop.csproj -c Debug— succeeds; the producedJava.Interop.dllreports the expected public key token84e04ff9cfb79065.Not in scope (deferred)
Flagged during the audit but left for follow-up PRs:
external/Java.Interop/external/xamarin-android-toolssubmodule with the top-levelexternal/xamarin-android-tools(still consumed byJava.Interop.sln,Java.Interop.BootstrapTasks.sln, and the CI templates).external/Java.Interop/.gitignore(only unique entries are obsolete Gendarme cruft and a specific dev's JDK installer package).README.md,LICENSE,ThirdPartyNotices.txt— need TPN / legal review before merging into top-level equivalents..editorconfig/.gitattributes— nearly identical to top-level; the JI.gitattributesuniquely coversgradlew/*.properties/*.kt/*.ktsforbuild-tools/gradle/. Harmless as-is.Pull Request
title and
description
should follow the
commit-messages.mdworkflow documentation, and in particular should include:Java.Interop.csprojand confirming the public-key token.