internal string GetMainScript(IPackageObject package)
        {
            var content = package.GetContentFiles()
                          .Where(f => f.EndsWith("main.csx", StringComparison.InvariantCultureIgnoreCase)).ToArray();

            string script = null;
            var    count  = content.Length;

            if (count == 1)
            {
                script = content[0];
            }
            else if (content.Count() > 1)
            {
                _logger.WarnFormat("Script Libraries in '{0}' ignored due to multiple Main files being present", package.FullName);
                return(null);
            }

            if (script != null)
            {
                _logger.DebugFormat("Found main script: {0}", script);
            }

            return(script);
        }
        internal string GetMainScript(IPackageObject package)
        {
            var content = package.GetContentFiles()
                .Where(f => f.EndsWith("main.csx", StringComparison.InvariantCultureIgnoreCase)).ToArray();

            string script = null;
            var count = content.Length;

            if (count == 1)
            {
                script = content[0];
            }
            else if (content.Count() > 1)
            {
                _logger.WarnFormat("Script Libraries in '{0}' ignored due to multiple Main files being present", package.FullName);
                return null;
            }

            if (script != null)
            {
                _logger.DebugFormat("Found main script: {0}", script);
            }

            return script;
        }
        /// <summary>
        /// Put方式执行Http请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="client"></param>
        /// <param name="requestUri"></param>
        /// <param name="content"></param>
        /// <param name="headers">头信息</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public static Task <T> PutPackageAsync <T>(this HttpClient client, string requestUri, HttpContent content, IDictionary <string, string> headers = null, CancellationToken cancellationToken = default(CancellationToken)) where T : class
        {
            TaskCompletionSource <T> tcs = new TaskCompletionSource <T>();

            if (headers != null && headers.Count > 0)
            {
                foreach (KeyValuePair <string, string> item in headers)
                {
                    if (client.DefaultRequestHeaders.Contains(item.Key))
                    {
                        client.DefaultRequestHeaders.Remove(item.Key);
                    }

                    client.DefaultRequestHeaders.Add(item.Key, item.Value);
                }
            }
            client.PutAsync(requestUri, content).ContinueWith((requestTask) =>
            {
                if (TaskHelper.HandleFaultsAndCancelation(requestTask, tcs, cancellationToken))
                {
                    return;
                }

                try
                {
                    HttpResponseMessage result = requestTask.Result;
                    if (result.IsSuccessStatusCode)
                    {
                        result.Content.ReadAsStringAsync().ContinueWith((resultTask) =>
                        {
                            try
                            {
                                string text = resultTask.Result;
                                if (TaskHelper.HandleFaultsAndCancelation(resultTask, tcs, cancellationToken))
                                {
                                    return;
                                }

                                IPackageObject <T> packageObject = JsonSerializer.Deserialize <IPackageObject <T> >(text);
                                if (packageObject.StatusCode == 2000)
                                {
                                    tcs.SetResult(packageObject.Body);
                                }
                                else
                                {
                                    tcs.SetException(new Exceptions.StatusCodeException(packageObject.StatusCode, packageObject.Notification));
                                }
                            }
                            catch (Exception deserializeException)
                            {
                                tcs.SetException(deserializeException);
                            }
                        });
                    }
                    else
                    {
                        tcs.SetException(new HttpRequestException(result.ReasonPhrase));
                    }
                }
                catch (Exception ex)
                {
                    tcs.SetException(ex);
                }
            });

            return(tcs.Task);
        }