private Guid Deploy(WebResource resource, bool force)
        {
            try
            {
                if (connection.IsReady)
                {
                    Entity entity = new Entity("webresource");
                    entity["name"]         = RemoveResourceExtension(resource.Name, resource.RemoveExtension);
                    entity["displayname"]  = resource.DisplayName;
                    entity["ishidden"]     = resource.IsHidden;
                    entity["canbedeleted"] = resource.CanBeDeleted;

                    if (((IEnumerable <string>)resource.Name.Split('.')).Last().Equals("xap"))
                    {
                        entity["silverlightversion"] = "5";
                    }

                    entity["description"]     = resource.Description;
                    entity["webresourcetype"] = new OptionSetValue(resource.WebResourceType);
                    entity["content"]         = GetEncodedFileContents(resource.Name);

                    if (resource.WebResourceId != Guid.Empty)
                    {
                        if (connection.Retrieve("webresource", resource.WebResourceId, new ColumnSet(new string[0])) != null)
                        {
                            Log.Information("Updating Resource: " + resource.Name + "... ");
                            entity.Id = resource.WebResourceId;
                            connection.Update(entity);
                        }
                    }
                    else
                    {
                        Log.Information("Creating Resource: " + resource.Name + "... ");
                        resource.WebResourceId = this.connection.Create(entity);
                    }

                    resource.UpdateChecksum();

                    if (solution.SolutionId.HasValue)
                    {
                        try
                        {
                            Log.Information("Linking Web Resource To Solution... ");
                            AddSolutionComponentRequest componentRequest = new AddSolutionComponentRequest()
                            {
                                ComponentType      = 61,
                                SolutionUniqueName = this.solution.SolutionUniqueName,
                                ComponentId        = resource.WebResourceId
                            };

                            connection.Execute((OrganizationRequest)componentRequest);
                        }
                        catch (Exception ex)
                        {
                            Log.Error(ex, "Failed");
                        }
                    }
                    return(resource.WebResourceId);
                }
                else
                {
                    throw new Exception(connection.LastCrmError);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Failed");

                if (ex.Message.ToLower().Contains("does not exist"))
                {
                    Log.Warning("Cleaning up dangling Web Resource Id...");
                    Log.Warning("File Will Import Cleanly During Next Deploy.");
                    resource.WebResourceId = Guid.Empty;
                }
                return(Guid.Empty);
            }
        }