From: Steve Harter Date: Fri, 9 Feb 2018 00:29:03 +0000 (-0600) Subject: Update assembly-conflict-resolution.md X-Git-Tag: submit/tizen/20210909.063632~11032^2~891 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a30651eb71bd3f1899e868f60191ec3534d9f9e9;p=platform%2Fupstream%2Fdotnet%2Fruntime.git Update assembly-conflict-resolution.md Commit migrated from https://github.com/dotnet/core-setup/commit/9c0e70992e1b6da8ccf3ffdcea5a37f80669450c --- diff --git a/docs/installer/design-docs/assembly-conflict-resolution.md b/docs/installer/design-docs/assembly-conflict-resolution.md index 6271d81..1e0b44b 100644 --- a/docs/installer/design-docs/assembly-conflict-resolution.md +++ b/docs/installer/design-docs/assembly-conflict-resolution.md @@ -1,3 +1,4 @@ + # Assembly Conflict Resolution ## Summary @@ -19,7 +20,7 @@ The probing locations consists of: 1. Shared Store 1. Framework directory(s) from higher to lower 1. App directory -. Additional locations specified in runtimeconfig.dev.json file +1. Additional locations specified in runtimeconfig.dev.json file For example, here's the probing order on Windows when running a non-published folder (in order to get additional locations from the app.runtimeconfig.dev.json file) * `C:\\Program Files (x86)\\coreservicing\\x64` @@ -30,6 +31,8 @@ For example, here's the probing order on Windows when running a non-published fo * `C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackagesFallback` * `C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder` +Once a deps.json entry has been found in a probe location, no further probes are performed for that entry. + #### Deps.json Ordering The order in which each layer's deps.json is processed is: * The application @@ -39,8 +42,8 @@ The order in which each layer's deps.json is processed is: #### Algorithm 1. Determine the probing paths 1. Read the app's deps.json -1. ->For each package entry, loop through the assemblies -1. ->->For each assembly, loop through the probing paths +1. ->For each assembly, loop through the probing paths +1. ->If the assembly entry has not been found yet: 1. ->->->If the probing path is a framework, then check its deps.json to see if it contains the exact package (by name and version). If so, then use the framework's location 1. ->->->If the probing path is not a framework, then use that location 1. Read the additional deps from --additional-deps and repeat steps 3-6 @@ -52,7 +55,7 @@ Note that for an app, its probing path comes *after* the framework, so intuitive ## Proposed changes for 2.1 Probe the app location before the framework's. This means flip (3) and (4) under **Probe Ordering** above and treat the app as the highest-level framework. The reason is that there may be frameworks that use OOB packages like apps, and we want to have "app wins" in such cases. -Replace step 5 under **Algorithm** above with: +Replace step 6 under **Algorithm** above with: * If the probing path is a framework, and no [minor] or [major] roll-forward occurred on that framework, then check its deps.json to see if it contains the exact package (by name and version). If so, then use the framework's location * If the probing path is a framework, and a [minor] or [major] roll-forward occurred on that framework, then check its deps.json to see if it contains a newer version of the assembly (by File Version and \ or Assembly Version). If so, then use the framework's location