public void UploadAssembly()
 {
     if (!isNew)
     {
         var clean = new Entities.PluginAssembly {
             PluginAssemblyId = this.pluginAssembly.PluginAssemblyId
         };
         clean.Content = System.Convert.ToBase64String(code);
         uow.Update(clean);
         this.messageService.Inform("Assembly code updated");
     }
 }
        public PluginAssembly FindOrCreate(string assemblyfilename)
        {
            this.code     = System.IO.File.ReadAllBytes(assemblyfilename);
            this.Assembly = System.Reflection.Assembly.Load(code);
            var publickeytoken = this.GetPublicKeyTokenFromAssembly();

            var name = assemblyfilename.Split(new char[] { '\\', '/' }).Last();

            if (name.ToUpper().EndsWith(".DLL"))
            {
                name = name.Substring(0, name.Length - 4);
            }

            var r = (from p in uow.PluginAssemblies.GetQuery()
                     where p.Name == name
                     select p).SingleOrDefault();

            if (r != null)
            {
                this.pluginAssembly = r;
                this.isNew          = false;
                return(r);
            }

            r = new PluginAssembly
            {
                PluginAssemblyId = Guid.NewGuid(),
                Content          = System.Convert.ToBase64String(code),
                Description      = name,
                IsolationMode    = new Microsoft.Xrm.Sdk.OptionSetValue(2),
                Name             = name,
                SourceType       = new Microsoft.Xrm.Sdk.OptionSetValue(0),
                Culture          = "neutral",
                PublicKeyToken   = publickeytoken,
                Version          = "1.0"
            };
            uow.Create(r);
            this.messageService.Inform("Assembly code was created");

            this.pluginAssembly = r;
            this.isNew          = true;

            return(r);
        }