1 <?xml version="1.0" encoding="utf-8"?>
2 <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4 <Import Project="..\dir.props"/>
5 <Import Project="..\dir.targets" />
8 <!-- The SignFiles target needs OutDir to be defined -->
9 <OutDir>$(BinDir)</OutDir>
12 <UsingTask AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" TaskName="ReadSigningRequired" />
15 <WindowsNativeLocation Include="$(BinDir)*.dll" />
16 <WindowsNativeLocation Include="$(BinDir)*.exe" />
18 <!-- sign the cross targeted files as well -->
19 <ItemGroup Condition="'$(CrossTargetComponentFolder)' != ''">
20 <WindowsNativeLocation Include="$(BinDir)$(CrossTargetComponentFolder)/*.dll" />
21 <WindowsNativeLocation Include="$(BinDir)$(CrossTargetComponentFolder)/*.exe" />
24 <Target Name="GenerateSignForWindowsNative">
26 Managed assemblies should already have a requires_signing file dropped so only generate
27 a requires_signing file for ones that don't exist which should leave just native assembies
29 <WriteSigningRequired AuthenticodeSig="$(AuthenticodeSig)"
30 MarkerFile="%(WindowsNativeLocation.Identity).requires_signing"
31 Condition="!Exists('%(WindowsNativeLocation.Identity).requires_signing')" />
34 <!-- populates item group FilesToSign with the list of files to sign -->
35 <Target Name="GetFilesToSignItems"
36 DependsOnTargets="GenerateSignForWindowsNative">
37 <!-- read all of the marker files and populate the FilesToSign item group -->
39 <SignMarkerFile Include="$(OutDir)**\*.requires_signing" />
41 <ReadSigningRequired MarkerFiles="@(SignMarkerFile)">
42 <Output TaskParameter="SigningMetadata" ItemName="FilesToSign" />
43 </ReadSigningRequired>
45 <Message Importance="High" Text="Attempting to sign %(FilesToSign.Identity) with authenticode='%(FilesToSign.Authenticode)' and strongname='%(FilesToSign.StrongName)'" />
50 Condition="'$(SkipSigning)' != 'true'"
51 DependsOnTargets="GetFilesToSignItems;SignFiles">
53 <!-- now that the files have been signed delete the marker files -->
54 <Delete Files="@(SignMarkerFile)" />