Skip to content

Commit b074e2c

Browse files
authored
Assembly load fixes (#2644)
* Cherry-picked signing and assembly load fixes from `master`
1 parent d6875ce commit b074e2c

File tree

6 files changed

+54
-21
lines changed

6 files changed

+54
-21
lines changed

scripts/build.ps1

+5-2
Original file line numberDiff line numberDiff line change
@@ -354,22 +354,25 @@ function Publish-Package
354354
# Copy the .NET core x86 and x64 testhost exes from tempPublish to required folder
355355
New-Item -ItemType directory -Path $testhostCorePackageX64Dir -Force | Out-Null
356356
Copy-Item $testhostCorePackageTempX64Dir\testhost* $testhostCorePackageX64Dir -Force -recurse
357+
Copy-Item $testhostCorePackageTempX64Dir\Microsoft.TestPlatform.PlatformAbstractions.dll $testhostCorePackageX64Dir -Force
358+
357359
New-Item -ItemType directory -Path $testhostCorePackageX86Dir -Force | Out-Null
358360
Copy-Item $testhostCorePackageTempX86Dir\testhost.x86* $testhostCorePackageX86Dir -Force -recurse
361+
Copy-Item $testhostCorePackageTempX86Dir\Microsoft.TestPlatform.PlatformAbstractions.dll $testhostCorePackageX86Dir -Force
359362

360363
# Copy over the Full CLR built testhost package assemblies to the Core CLR and Full CLR package folder.
361364
$coreCLRFull_Dir = "TestHost"
362365
$fullDestDir = Join-Path $coreCLR20PackageDir $coreCLRFull_Dir
363366
New-Item -ItemType directory -Path $fullDestDir -Force | Out-Null
364-
Copy-Item $testhostFullPackageDir\* $fullDestDir -Force -recurse
367+
Copy-Item $testhostFullPackageDir\* $fullDestDir -Force -Recurse
365368

366369
Set-ScriptFailedOnError
367370

368371
# Copy over the Full CLR built datacollector package assemblies to the Core CLR package folder along with testhost
369372
Publish-PackageInternal $dataCollectorProject $TPB_TargetFramework472 $fullDestDir
370373

371374
New-Item -ItemType directory -Path $fullCLRPackageDir -Force | Out-Null
372-
Copy-Item $testhostFullPackageDir\* $fullCLRPackageDir -Force -recurse
375+
Copy-Item $testhostFullPackageDir\* $fullCLRPackageDir -Force -Recurse
373376

374377
Set-ScriptFailedOnError
375378

scripts/verify-nupkgs.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ function Verify-Nuget-Packages($packageDirectory)
2121
"Microsoft.TestPlatform.Extensions.TrxLogger" = 33;
2222
"Microsoft.TestPlatform.ObjectModel" = 62;
2323
"Microsoft.TestPlatform.Portable" = 566;
24-
"Microsoft.TestPlatform.TestHost" = 145;
24+
"Microsoft.TestPlatform.TestHost" = 154;
2525
"Microsoft.TestPlatform.TranslationLayer" = 121}
2626

2727
$nugetPackages = Get-ChildItem -Filter "*.nupkg" $packageDirectory | % { $_.FullName}

scripts/verify-sign.ps1

+19-7
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ function Verify-Assemblies
4545
if ($signature.SignerCertificate.Subject -eq "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US") {
4646
Write-Log "Valid: $($_.FullName)"
4747
}
48+
elseif ($signature.SignerCertificate.Subject -eq "CN=Microsoft 3rd Party Application Component, O=Microsoft Corporation, L=Redmond, S=Washington, C=US") {
49+
Write-Log "Valid (3rd Party): $($_.FullName)"
50+
}
4851
else {
4952
# For legacy components, sign certificate is always "prod" signature. Skip such binaries.
5053
if ($signature.SignerCertificate.Thumbprint -eq "98ED99A67886D020C564923B7DF25E9AC019DF26") {
@@ -54,22 +57,30 @@ function Verify-Assemblies
5457
elseif ($signature.SignerCertificate.Thumbprint -eq "5EAD300DC7E4D637948ECB0ED829A072BD152E17") {
5558
Write-Log "Valid (Prod Signed): $($_.FullName)."
5659
}
57-
# For some dlls e.g. "Interop.UIAutomationClient.dll", sign certificate is different signature. Skip such binaries.
60+
# For some dlls e.g. "Interop.UIAutomationClient.dll", sign certificate is different signature. Skip such binaries.
5861
elseif ($signature.SignerCertificate.Thumbprint -eq "67B1757863E3EFF760EA9EBB02849AF07D3A8080") {
5962
Write-Log "Valid (Prod Signed): $($_.FullName)."
6063
}
61-
# For some dlls e.g. "Microsoft.VisualStudio.ArchitectureTools.PEReader.dll", sign certificate is different signature. Skip such binaries.
64+
# For some dlls e.g. "Microsoft.VisualStudio.ArchitectureTools.PEReader.dll", sign certificate is different signature. Skip such binaries.
6265
elseif ($signature.SignerCertificate.Thumbprint -eq "9DC17888B5CFAD98B3CB35C1994E96227F061675") {
6366
Write-Log "Valid (Prod Signed): $($_.FullName)."
6467
}
65-
# For some dlls sign certificate is different signature. Skip such binaries.
68+
# For some dlls sign certificate is different signature. Skip such binaries.
6669
elseif ($signature.SignerCertificate.Thumbprint -eq "62009AAABDAE749FD47D19150958329BF6FF4B34") {
6770
Write-Log "Valid (Prod Signed): $($_.FullName)."
6871
}
6972
# Microsoft 3rd Party Authenticode Signature
7073
elseif ($signature.SignerCertificate.Thumbprint -eq "899FA016DEE8E665FF2A315A1151C43FB96C430B") {
7174
Write-Log "Valid (Prod Signed): $($_.FullName)."
7275
}
76+
# Microsoft 3rd Party Application Component
77+
elseif ($signature.SignerCertificate.Thumbprint -eq "709133ECC53CBF386F4A5ECB782AEEF499F0F8CA") {
78+
Write-Log "Valid (Prod Signed): $($_.FullName)."
79+
}
80+
# Microsoft 3rd Party Application Component
81+
elseif ($signature.SignerCertificate.Thumbprint -eq "912357a68d29b8fe17168ef8c44d6830d1d42801") {
82+
Write-Log "Valid (Prod Signed): $($_.FullName)."
83+
}
7384
else {
7485
Write-FailLog "Incorrect certificate. File: $($_.FullName). Certificate: $($signature.SignerCertificate.Thumbprint)."
7586
}
@@ -99,12 +110,13 @@ function Verify-NugetPackages
99110
Invoke-WebRequest https://dist.nuget.org/win-x86-commandline/v4.6.1/nuget.exe -OutFile $nugetInstallPath
100111
}
101112

102-
Write-Log "Using nuget.exe installed at $nugetInstallPath"
113+
Write-Log "Using nuget.exe installed at $nugetInstallPath"
103114

104-
$artifactsDirectory = Join-Path $env:TP_OUT_DIR $TPB_Configuration
115+
$artifactsDirectory = Join-Path $env:TP_OUT_DIR $TPB_Configuration
105116
$packagesDirectory = Join-Path $artifactsDirectory "packages"
117+
106118
Get-ChildItem -Filter *.nupkg $packagesDirectory | % {
107-
& $nugetInstallPath verify -signature -CertificateFingerprint 3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE $_.FullName
119+
& $nugetInstallPath verify -signature -CertificateFingerprint "3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE;AA12DA22A49BCE7D5C1AE64CC1F3D892F150DA76140F210ABD2CBFFCA2C18A27;" $_.FullName
108120
}
109121

110122
Write-Log "Verify-NugetPackages: Complete"
@@ -130,4 +142,4 @@ function Write-FailLog ([string] $message)
130142
}
131143

132144
Verify-Assemblies
133-
Verify-NugetPackages
145+
Verify-NugetPackages

src/package/nuspec/Microsoft.TestPlatform.TestHost.NetCore.props

+17
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1212
<Visible>False</Visible>
1313
</Content>
14+
<Content Include="$(MSBuildThisFileDirectory)x86\Microsoft.TestPlatform.PlatformAbstractions.dll">
15+
<Link>Microsoft.TestPlatform.PlatformAbstractions.dll</Link>
16+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
17+
<Visible>False</Visible>
18+
</Content>
1419
</ItemGroup>
1520
<ItemGroup Condition=" ('$(Platform)'!= 'x86' AND '$(PlatformTarget)' != 'x86') AND '$(OS)' == 'Windows_NT'" >
1621
<Content Include="$(MSBuildThisFileDirectory)x64\testhost.exe">
@@ -23,5 +28,17 @@
2328
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
2429
<Visible>False</Visible>
2530
</Content>
31+
<Content Include="$(MSBuildThisFileDirectory)x64\Microsoft.TestPlatform.PlatformAbstractions.dll">
32+
<Link>Microsoft.TestPlatform.PlatformAbstractions.dll</Link>
33+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
34+
<Visible>False</Visible>
35+
</Content>
36+
</ItemGroup>
37+
<ItemGroup Condition=" '$(OS)' != 'Windows_NT'" >
38+
<Content Include="$(MSBuildThisFileDirectory)Microsoft.TestPlatform.PlatformAbstractions.dll">
39+
<Link>Microsoft.TestPlatform.PlatformAbstractions.dll</Link>
40+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
41+
<Visible>False</Visible>
42+
</Content>
2643
</ItemGroup>
2744
</Project>

src/package/nuspec/TestPlatform.TestHost.nuspec

+10-11
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,28 @@
3232
<file src="ThirdPartyNotices.txt" target="" />
3333
<file src="_._" target="lib\net45\" />
3434

35-
<!-- NetCore -->
36-
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.TestPlatform.CommunicationUtilities.dll" target="lib\netcoreapp2.1\" />
37-
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.TestPlatform.CrossPlatEngine.dll" target="lib\netcoreapp2.1\" />
38-
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.VisualStudio.TestPlatform.Common.dll" target="lib\netcoreapp2.1\" />
39-
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.TestPlatform.Utilities.dll" target="lib\netcoreapp2.1\" />
35+
<!-- netcoreapp2.1 -->
36+
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.VisualStudio.TestPlatform.*.dll" target="lib\netcoreapp2.1\" />
37+
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.TestPlatform.*.dll" target="lib\netcoreapp2.1\" />
4038
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\testhost.dll" target="lib\netcoreapp2.1\" />
4139
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\testhost.deps.json" target="lib\netcoreapp2.1\" />
4240
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\x86\msdia140.dll" target="lib\netcoreapp2.1\x86\" />
4341
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\x64\msdia140.dll" target="lib\netcoreapp2.1\x64\" />
4442

45-
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x64\testhost.dll" target="build\netcoreapp2.1\x64" />
46-
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x64\testhost.exe" target="build\netcoreapp2.1\x64" />
43+
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.TestPlatform.PlatformAbstractions.dll" target="build\netcoreapp2.1\" />
44+
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x64\testhost.dll" target="build\netcoreapp2.1\x64\" />
45+
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x64\testhost.exe" target="build\netcoreapp2.1\x64\" />
46+
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x64\Microsoft.TestPlatform.PlatformAbstractions.dll" target="build\netcoreapp2.1\x64\" />
4747
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x86\testhost.x86.dll" target="build\netcoreapp2.1\x86\" />
4848
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x86\testhost.x86.exe" target="build\netcoreapp2.1\x86\" />
49+
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x86\Microsoft.TestPlatform.PlatformAbstractions.dll" target="build\netcoreapp2.1\x86\" />
4950

5051
<file src="Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.TestPlatform.TestHost.props" target="build\netcoreapp2.1\" />
5152

5253
<!-- UWP -->
5354
<file src="Microsoft.TestPlatform.TestHost\uap10.0\testhost.dll" target="lib\uap10.0\" />
54-
<file src="Microsoft.TestPlatform.TestHost\uap10.0\Microsoft.TestPlatform.CommunicationUtilities.dll" target="lib\uap10.0\" />
55-
<file src="Microsoft.TestPlatform.TestHost\uap10.0\Microsoft.TestPlatform.CrossPlatEngine.dll" target="lib\uap10.0\" />
56-
<file src="Microsoft.TestPlatform.TestHost\uap10.0\Microsoft.TestPlatform.Utilities.dll" target="lib\uap10.0\" />
57-
<file src="Microsoft.TestPlatform.TestHost\uap10.0\Microsoft.VisualStudio.TestPlatform.Common.dll" target="lib\uap10.0\" />
55+
<file src="Microsoft.TestPlatform.TestHost\uap10.0\Microsoft.TestPlatform.*.dll" target="lib\uap10.0\" />
56+
<file src="Microsoft.TestPlatform.TestHost\uap10.0\Microsoft.VisualStudio.TestPlatform.*.dll" target="lib\uap10.0\" />
5857

5958
<file src="Microsoft.TestPlatform.TestHost\uap10.0\x86\msdia140.dll" target="build\uap10.0\x86\" />
6059
<file src="Microsoft.TestPlatform.TestHost\uap10.0\x64\msdia140.dll" target="build\uap10.0\x64\" />

src/package/sign/sign.proj

+2
Original file line numberDiff line numberDiff line change
@@ -345,8 +345,10 @@
345345
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\testhost.dll" />
346346
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x64\testhost.exe" />
347347
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x64\testhost.dll" />
348+
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x64\Microsoft.TestPlatform.PlatformAbstractions.dll" />
348349
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x86\testhost.x86.exe" />
349350
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x86\testhost.x86.dll" />
351+
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\win7-x86\Microsoft.TestPlatform.PlatformAbstractions.dll" />
350352
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.TestPlatform.CommunicationUtilities.dll" />
351353
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.TestPlatform.CrossPlatEngine.dll" />
352354
<TestHostCoreAssembliesToSign Include="$(ArtifactsBaseDirectory)Microsoft.TestPlatform.TestHost\netcoreapp2.1\Microsoft.TestPlatform.PlatformAbstractions.dll" />

0 commit comments

Comments
 (0)