private static CSharpCompilationOptions AddSigningOptions(CSharpCompilationOptions options, CommonCompilerOptions compilerOptions, string projectDirectory)
        {
            var useOssSigning = compilerOptions.PublicSign == true;
            var keyFile       = compilerOptions.KeyFile;

            if (!string.IsNullOrEmpty(keyFile))
            {
                keyFile = Path.GetFullPath(Path.Combine(projectDirectory, compilerOptions.KeyFile));

                if (
#if !NET451
                    !RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ||
#endif
                    useOssSigning)
                {
                    return(options.WithCryptoPublicKey(
                               SnkUtils.ExtractPublicKey(File.ReadAllBytes(keyFile))));
                }

                options = options.WithCryptoKeyFile(keyFile);

                return(options.WithDelaySign(compilerOptions.DelaySign));
            }

            return(options);
        }
예제 #2
0
        private static CSharpCompilationOptions AddSigningOptions(CSharpCompilationOptions options, CommonCompilerOptions compilerOptions, string projectDirectory)
        {
            var useOssSigning = compilerOptions.PublicSign == true;
            var keyFile       = compilerOptions.KeyFile;

            if (!string.IsNullOrEmpty(keyFile))
            {
                keyFile = Path.GetFullPath(Path.Combine(projectDirectory, compilerOptions.KeyFile));

                if (RuntimeEnvironment.OperatingSystemPlatform != InternalAbstractions.Platform.Windows || useOssSigning)
                {
                    return(options.WithCryptoPublicKey(
                               SnkUtils.ExtractPublicKey(File.ReadAllBytes(keyFile))));
                }

                options = options.WithCryptoKeyFile(keyFile);

                return(options.WithDelaySign(compilerOptions.DelaySign));
            }

            return(options);
        }