CodeSign.targets 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <Project>
  2. <PropertyGroup>
  3. <CodeSignDependsOn>$(CodeSignDependsOn);CollectFileSignInfo</CodeSignDependsOn>
  4. </PropertyGroup>
  5. <Target Name="CollectFileSignInfo" DependsOnTargets="_PrepareRepositories;GetProjectArtifactInfo;GetFxProjectArtifactInfo">
  6. <ItemGroup>
  7. <_RepositoryProject Remove="@(_RepositoryProject)" />
  8. <_RepositoryProject Include="$(MSBuildProjectFullPath)" Condition="'%(Repository.Identity)' != ''">
  9. <AdditionalProperties>RepositoryRoot=%(Repository.RootPath)</AdditionalProperties>
  10. <Build>%(Repository.Build)</Build>
  11. </_RepositoryProject>
  12. <_ShippedRepositoryProject Include="$(MSBuildProjectFullPath)" Condition="'%(ShippedRepository.Identity)' != ''">
  13. <AdditionalProperties>RepositoryRoot=%(ShippedRepository.RootPath)</AdditionalProperties>
  14. <Build>false</Build>
  15. </_ShippedRepositoryProject>
  16. </ItemGroup>
  17. <PropertyGroup>
  18. <GetFileSignInfoProps>
  19. AssemblySigningCertName=$(AssemblySigningCertName);
  20. AssemblySigning3rdPartyCertName=$(AssemblySigning3rdPartyCertName);
  21. PowerShellSigningCertName=$(PowerShellSigningCertName);
  22. PackageSigningCertName=$(PackageSigningCertName);
  23. VsixSigningCertName=$(VsixSigningCertName);
  24. JarSigningCertName=$(JarSigningCertName);
  25. ArtifactsDir=$(ArtifactsDir)
  26. </GetFileSignInfoProps>
  27. </PropertyGroup>
  28. <MSBuild Projects="@(_RepositoryProject)"
  29. Condition="@(_RepositoryProject->Count()) != 0"
  30. Targets="_GetFileSignInfo"
  31. Properties="$(GetFileSignInfoProps);$(DesignTimeBuildProps);DesignTimeBuild=true;Configuration=$(Configuration);VersionSuffix=$(VersionSuffix);BuildNumberSuffix=$(BuildNumberSuffix);CustomAfterKoreBuildTargets=$(MSBuildThisFileFullPath)"
  32. BuildInParallel="true">
  33. <Output TaskParameter="TargetOutputs" ItemName="_RepoFileSignInfo" />
  34. </MSBuild>
  35. <MSBuild Projects="@(_ShippedRepositoryProject)"
  36. Condition="@(_ShippedRepositoryProject->Count()) != 0"
  37. Targets="_GetFileSignInfo"
  38. Properties="$(GetFileSignInfoProps);$(DesignTimeBuildProps);IsFinalBuild=true;DesignTimeBuild=true;Configuration=$(Configuration);VersionSuffix=$(VersionSuffix);BuildNumberSuffix=$(BuildNumberSuffix);CustomAfterKoreBuildTargets=$(MSBuildThisFileFullPath)"
  39. BuildInParallel="true">
  40. <Output TaskParameter="TargetOutputs" ItemName="_ShippedRepoFileSignInfo" />
  41. </MSBuild>
  42. <ItemGroup>
  43. <!-- If repos were not built, only use this info to collect the mapping of FileName -> Certificate. Otherwise, include .nupkg and .zips in signing. -->
  44. <_FilesToSign Include="@(_RepoFileSignInfo)" Condition="'%(_RepoFileSignInfo.IsFileToSign)' == 'true' AND ('$(_ReposWereBuilt)' == 'true' OR '%(_RepoFileSignInfo.Container)' != '' ) " />
  45. <_FilesToSign Include="@(_ShippedRepoFileSignInfo)" Condition="'%(_ShippedRepoFileSignInfo.IsFileToSign)' == 'true' AND '%(_ShippedRepoFileSignInfo.Container)' != '' " />
  46. <FilesToSign Include="@(_FilesToSign)" />
  47. <!-- Normalize FilesToExcludeFromSigning to filename + extension. -->
  48. <_Temp Remove="@(_Temp)" />
  49. <_Temp Include="@(FilesToExcludeFromSigning)" />
  50. <FilesToExcludeFromSigning Remove="@(FilesToExcludeFromSigning)" />
  51. <FilesToExcludeFromSigning Include="@(_Temp->'%(FileName)%(Extension)')" />
  52. <_Temp Remove="@(_Temp)" />
  53. <FilesToExcludeFromSigning Include="@(_ShippedRepoFileSignInfo->'%(FileName)%(Extension)')" Condition="'%(_ShippedRepoFileSignInfo.IsFileToExcludeFromSign)' == 'true'" />
  54. <FilesToExcludeFromSigning Include="@(_RepoFileSignInfo->'%(FileName)%(Extension)')" Condition="'%(_RepoFileSignInfo.IsFileToExcludeFromSign)' == 'true'" />
  55. <!-- Workaround for the way we have both repo and Universe builds, crossgen AND uncrossgened outputs. This prevents duplicate configuration between 'exclude' and 'sign' options. -->
  56. <FilesToExcludeFromSigning Remove="@(FilesToSign->'%(FileName)%(Extension)')" />
  57. </ItemGroup>
  58. </Target>
  59. <Target Name="_GetFileSignInfo" DependsOnTargets="GetArtifactInfo" Returns="@(_FileSignInfo)">
  60. <ItemGroup>
  61. <_FileSignInfo Include="@(FilesToSign)" IsFileToSign="true" />
  62. <_FileSignInfo Include="@(FilesToExcludeFromSigning)" IsFileToExcludeFromSign="true" />
  63. </ItemGroup>
  64. </Target>
  65. </Project>