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); } }