diff options
Diffstat (limited to 'packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/sign.targets')
-rwxr-xr-x | packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/sign.targets | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/sign.targets b/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/sign.targets new file mode 100755 index 0000000000..e7d8bd0e8b --- /dev/null +++ b/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/sign.targets @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <PropertyGroup> + <AuthenticodeSig Condition="'$(AuthenticodeSig)' == ''">Microsoft</AuthenticodeSig> + <StrongNameSig Condition="'$(StrongNameSig)' == '' and '$(SignType)' == 'real' and '$(UseOpenKey)' != 'true'">StrongName</StrongNameSig> + </PropertyGroup> + + <UsingTask AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" TaskName="OpenSourceSign" /> + <UsingTask AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll" TaskName="WriteSigningRequired" /> + + <PropertyGroup Condition="'$(SkipSigning)'!='true'"> + + <!-- For older support set AssemblyKey base on Use*Key properties but moving forward projects should just set AssemblyKey --> + <AssemblyKey Condition="'$(AssemblyKey)'=='' and '$(UseOpenKey)' == 'true'">Open</AssemblyKey> + <AssemblyKey Condition="'$(AssemblyKey)'=='' and '$(UseECMAKey)' == 'true'">ECMA</AssemblyKey> + <AssemblyKey Condition="'$(AssemblyKey)'=='' and '$(UseMSFTKey)' == 'true'">MSFT</AssemblyKey> + + <!-- Force all test projects to use the Test key --> + <AssemblyKey Condition="'$(IsTestProject)' == 'true'">Test</AssemblyKey> + + <AssemblyOriginatorKeyFile Condition="'$(AssemblyKey)' == 'MSFT'">$(ToolsDir)MSFT.snk</AssemblyOriginatorKeyFile> + <AssemblyOriginatorKeyFile Condition="'$(AssemblyKey)' == 'ECMA'">$(ToolsDir)ECMA.snk</AssemblyOriginatorKeyFile> + <AssemblyOriginatorKeyFile Condition="'$(AssemblyKey)' == 'Open'">$(ToolsDir)Open.snk</AssemblyOriginatorKeyFile> + <AssemblyOriginatorKeyFile Condition="'$(AssemblyKey)' == 'SilverlightPlatform'">$(ToolsDir)SilverlightPlatformPublicKey.snk</AssemblyOriginatorKeyFile> + <AssemblyOriginatorKeyFile Condition="'$(AssemblyKey)' == 'SilverlightExtension'">$(ToolsDir)SilverlightPublicKey.snk</AssemblyOriginatorKeyFile> + + <StrongNameSig Condition="'$(AssemblyKey)' == 'Open'">Open</StrongNameSig> + <StrongNameSig Condition="'$(AssemblyKey)' == 'SilverlightPlatform'">SilverlightCert121</StrongNameSig> + <StrongNameSig Condition="'$(AssemblyKey)' == 'SilverlightExtension'">MsSharedLib</StrongNameSig> + + <!-- Don't sign test assemblies with the Microsoft Key, as this affects APIs checking if the test assembly is an MS Key --> + <AssemblyOriginatorKeyFile Condition="'$(AssemblyKey)' == 'Test'">$(ToolsDir)Test.snk</AssemblyOriginatorKeyFile> + + <SignAssembly>true</SignAssembly> + <DelaySign>true</DelaySign> + + <DelaySign Condition="'$(AssemblyKey)' == 'Test'">false</DelaySign> + + <!-- + Setting DelaySign to true when running build on unix because of Roslyn doesn't support full signing on non-windows. + See issue https://github.com/dotnet/roslyn/issues/8210. + --> + <DelaySign Condition="'$(RunningOnUnix)' == 'true'">true</DelaySign> + + <DefineConstants>$(DefineConstants);SIGNED</DefineConstants> + + <!-- applicable values for SignType are public, test or real --> + <SignType Condition="'$(SignType)' == ''">public</SignType> + + <ShouldWriteSigningRequired Condition="'$(IsTestProject)' == 'true'">false</ShouldWriteSigningRequired> + <ShouldWriteSigningRequired Condition="'$(SkipSigning)' == 'true'">false</ShouldWriteSigningRequired> + <ShouldWriteSigningRequired Condition="'$(SignType)' == 'public' or '$(SignType)' == 'oss'">false</ShouldWriteSigningRequired> + <ShouldWriteSigningRequired Condition="'$(ShouldWriteSigningRequired)'==''">true</ShouldWriteSigningRequired> + + <ShouldOpenSourceSign Condition="'$(SignType)' == 'public' or '$(SignType)' == 'oss'">$(DelaySign)</ShouldOpenSourceSign> + <ShouldOpenSourceSign Condition="'$(SkipSigning)' == 'true'">false</ShouldOpenSourceSign> + </PropertyGroup> + + <!-- stub for signing. for official builds this is replaced with the real one --> + <Target Name="SignFiles" AfterTargets="AfterBuild" /> + + <Target Name="SignFilesLocally" + BeforeTargets="SignFiles" + Condition="'$(RunningOnUnix)' != 'true'"> + + <ItemGroup> + <FilesToSignLocally Include="@(FilesToSign)" Condition="'%(FilesToSign.StrongName)' == 'Open'"> + <AssemblyKeyFile>$(ToolsDir)Open.snk</AssemblyKeyFile> + </FilesToSignLocally> + <!-- Clear out the strong name metadata for open keys --> + <FilesToSign Condition="'%(FilesToSign.StrongName)' == 'Open'"> + <StrongName></StrongName> + </FilesToSign> + </ItemGroup> + + <!-- Depends on sn being on the path thus will only work in some windows environments --> + <Exec Condition="'@(FilesToSignLocally)' != ''" + Command="sn -R %(FilesToSignLocally.Identity) %(FilesToSignLocally.AssemblyKeyFile)" + StandardOutputImportance="Low" /> + </Target> + + <!-- writes a signing marker file containing the required signatures --> + <Target Name="WriteSigningRequired" + AfterTargets="AfterBuild" + Condition="'$(ShouldWriteSigningRequired)' == 'true'" + Inputs="$(TargetPath)" + Outputs="$(TargetPath).requires_signing"> + <WriteSigningRequired AuthenticodeSig="$(AuthenticodeSig)" + StrongNameSig="$(StrongNameSig)" + MarkerFile="$(TargetPath).requires_signing" /> + <ItemGroup> + <FileWrites Include="%(IntermediateAssembly.Identity).requires_signing" /> + </ItemGroup> + </Target> + + <!-- + NOTE: This mechanism for wiring in the OpenSourceSign target can't be changed to any of the following: + + * AfterTargets=Compile -> hit by intellisense builds while @(IntermediateAssembly) doesn't exist yet. + * AfterTargets=PrepareForRun -> hit after @(IntermediateAssembly) has already been copied to output. + * BeforeTargets=CopyFilesToOutputDirectory -> does not work on Mono. + --> + <PropertyGroup> + <PrepareForRunDependsOn>OpenSourceSign;$(PrepareForRunDependsOn)</PrepareForRunDependsOn> + </PropertyGroup> + + <Target Name="OpenSourceSign" + Condition="'$(ShouldOpenSourceSign)' == 'true' and '@(IntermediateAssembly)' != ''" + Inputs="@(IntermediateAssembly)" + Outputs="%(IntermediateAssembly.Identity).oss_signed" + > + <OpenSourceSign AssemblyPath="%(IntermediateAssembly.Identity)" /> + <Touch Files="%(IntermediateAssembly.Identity).oss_signed" AlwaysCreate="true" /> + <ItemGroup> + <FileWrites Include="%(IntermediateAssembly.Identity).oss_signed" /> + </ItemGroup> + </Target> + +</Project> |