summaryrefslogtreecommitdiff
path: root/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/sign.targets
diff options
context:
space:
mode:
Diffstat (limited to 'packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/sign.targets')
-rwxr-xr-xpackages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/sign.targets120
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>