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" />
19 <Target Name="GenerateSignForWindowsNative">
21 Managed assemblies should already have a requires_signing file dropped so only generate
22 a requires_signing file for ones that don't exist which should leave just native assembies
24 <WriteSigningRequired AuthenticodeSig="$(AuthenticodeSig)"
25 MarkerFile="%(WindowsNativeLocation.Identity).requires_signing"
26 Condition="!Exists('%(WindowsNativeLocation.Identity).requires_signing')" />
29 <!-- populates item group FilesToSign with the list of files to sign -->
30 <Target Name="GetFilesToSignItems"
31 DependsOnTargets="GenerateSignForWindowsNative">
32 <!-- read all of the marker files and populate the FilesToSign item group -->
34 <SignMarkerFile Include="$(OutDir)**\*.requires_signing" />
36 <ReadSigningRequired MarkerFiles="@(SignMarkerFile)">
37 <Output TaskParameter="SigningMetadata" ItemName="FilesToSign" />
38 </ReadSigningRequired>
40 <Message Importance="High" Text="Attempting to sign %(FilesToSign.Identity) with authenticode='%(FilesToSign.Authenticode)' and strongname='%(FilesToSign.StrongName)'" />
45 Condition="'$(SkipSigning)' != 'true' and '$(SignType)' != 'oss'"
46 DependsOnTargets="GetFilesToSignItems;SignFiles">
48 <!-- now that the files have been signed delete the marker files -->
49 <Delete Files="@(SignMarkerFile)" />