@@ -466,6 +466,8 @@ public static async Task<bool> InstallFromSourceAsync(
466466
467467 using ( var packageReader = new PackageArchiveReader ( nupkgStream ) )
468468 {
469+ ValidateExpectedPackage ( packageIdentity , packageReader ) ;
470+
469471 if ( packageSaveMode . HasFlag ( PackageSaveMode . Nuspec ) || packageSaveMode . HasFlag ( PackageSaveMode . Files ) )
470472 {
471473 telemetry . StartIntervalMeasure ( ) ;
@@ -588,6 +590,22 @@ await VerifyPackageSignatureAsync(
588590 }
589591 }
590592
593+ private static void ValidateExpectedPackage ( PackageIdentity packageIdentity , PackageArchiveReader packageReader )
594+ {
595+ PackageIdentity actualIdentity = packageReader . GetIdentity ( ) ;
596+ if ( ! PackageIdentityComparer . Default . Equals ( packageIdentity , actualIdentity ) )
597+ {
598+ string message = string . Format (
599+ CultureInfo . InvariantCulture ,
600+ Strings . ErrorPackageIdentityDoesNotMatch ,
601+ packageIdentity . Id ,
602+ packageIdentity . Version ,
603+ actualIdentity . Id ,
604+ actualIdentity . Version ) ;
605+ throw new PackagingException ( message ) ;
606+ }
607+ }
608+
591609 /// <summary>
592610 /// Delete the target directory path and the temp nupkg path in case of a failed extraction.
593611 /// </summary>
@@ -948,6 +966,7 @@ public static async Task<IEnumerable<string>> CopySatelliteFilesAsync(
948966 {
949967 using ( var packageReader = new PackageArchiveReader ( nupkgFilePath ! ) )
950968 {
969+ ValidateExpectedPackage ( packageIdentity , packageReader ) ;
951970 return await CopySatelliteFilesAsync (
952971 packageReader ,
953972 packagePathResolver ,
0 commit comments