# Annotated dependencies.props This file is used in CoreFX, CoreCLR, WCF, and BuildTools, located in the repository root. Below is a breakdown of [corefx's master dependencies.props](https://github.com/dotnet/corefx/blob/b57a43bb40fc2099e91d641a8b4f8c76a46afe6a/dependencies.props). It is used for dependency auto-upgrade and dependency verification. ``` xml 450606241ffd24c3c9671cd002955a68e98008a7 450606241ffd24c3c9671cd002955a68e98008a7 0db1f9d8996a6a05960f79712299652a4b04147f 450606241ffd24c3c9671cd002955a68e98008a7 ``` Source of truth for dependency tooling: the commit hash of the dotnet/versions master branch as of the last auto-upgrade. These are used with the GitHub raw api to download build-infos. In `/t:UpdateDependenciesAndSubmitPullRequest`, the task first finds the latest CurrentRef of the dotnet/versions repository, which when used with the raw API will return the latest version of *every* build info. The update proceeds, using that latest build-info data. After updating, the task determines which build-infos were used and updates only the used build-info `*CurrentRef`s in the above part of dependencies.props. When doing a manual update with `/t:UpdateDependencies`, you need to change these `CurrentRef`s yourself to whatever dotnet/versions commit you want to update to before executing the target. During dependency verification (`/t:VerifyDependencies` or automatically during `sync`) the targeted build-infos are downloaded and project files are checked for consistency with the build-infos. ``` xml beta-24601-02 beta-24603-02 beta-24523-00 beta-24603-00 ``` These are auto-updated by `UpdateDependenciesAndSubmitPullRequest` and `UpdateDependencies`, with values taken from `Latest.txt`. They are only used to flow this info into MSBuild, *not* by project.json validation (as they were in older types of dependency auto-update). These properties are verified to match the downloaded build-info during `VerifyDependencies`. ``` xml 1.0.3-prerelease-00826-05 1.0.0-alpha-build0040 ``` Similar to the `*ExpectedPrerelease` properties, but these are for specific named packages. They are used in MSBuild targets during builds. These versions in particular aren't auto-updated because they are tools that don't regularly change. ``` xml build-info/dotnet/ master $(MSBuildThisFileFullPath) ``` The first two properties assemble the path to the build-info files that CoreFX master depends on. `CurrentRefXmlPath` is used by the auto-update targets to determine where `dependencies.props` is. ``` xml $(BaseDotNetBuildInfo)corefx/$(DependencyBranch) $(CoreFxCurrentRef) $(BaseDotNetBuildInfo)coreclr/$(DependencyBranch) $(CoreClrCurrentRef) $(BaseDotNetBuildInfo)projectk-tfs/$(DependencyBranch) $(ExternalCurrentRef) $(BaseDotNetBuildInfo)projectn-tfs/$(DependencyBranch) $(ProjectNTfsCurrentRef) https://raw.githubusercontent.com/dotnet/versions $(MSBuildThisFileFullPath) CoreFxExpectedPrerelease CoreFx $(MSBuildThisFileFullPath) CoreClrExpectedPrerelease CoreClr $(MSBuildThisFileFullPath) ExternalExpectedPrerelease External $(MSBuildThisFileFullPath) ProjectNTfsExpectedPrerelease ProjectNTfs ``` Each `RemoteDependencyBuildInfo` indicates a build-info to download, which consists of the `Latest.txt` and `Latest_Packages.txt` at a certain path. `CurrentRef` is flowed from the property into the item metadata rather than hard-coded in the metadata for enhanced visibility in auto-update diffs. The `XmlUpdateStep`s are rules that match the `*ExpectedPrerelease` properties earlier in this file and link them to the build infos. ``` xml 1.0.1 2.1.0 1.0.0-prerelease-00830-02 $(XunitPerfAnalysisPackageVersion) %(Identity) true microsoft.xunit.runner.uwp $(AppXRunnerVersion) ``` These are "local" `DependencyBuildInfo`s created to cover packages that aren't in downloaded build-infos because they are external, not published to dotnet/versions, or don't normally change. Specifically, these allow the package versions to be validated in `project.json` files.