2010-01-13 22 views
1

我可以從流中創建程序集,就像MSSMS生成的程序集腳本一樣嗎? 我需要從放置在SQL Server無權訪問的目錄中的DLL創建程序集。
雖然程序集安裝程序可以訪問程序集。
所以我的問題是:我可以讀取程序集並從流讀取生成創建?SQL Server 2005從C#流創建程序集#

謝謝。

回答

1

我想我想通了..
我使用Tomalak的字節數組來從this post十六進制方法。


    private string getAssemblyAsHex(string asmPath) 
    { 
     using (BinaryReader br = new BinaryReader(File.OpenRead(asmPath))) 
     { 
      byte[] buff = new byte[br.BaseStream.Length]; 
      br.Read(buff, 0, buff.Length - 1); 
      return ByteArrayToString(buff); 
     } 
    }

private static string ByteArrayToString(byte[] ba) 
    { 
     StringBuilder hex = new StringBuilder(ba.Length * 2); 
     foreach (byte b in ba) 
      hex.AppendFormat("{0:x2}", b); 
     return hex.ToString(); 
    } 

然後我就CONCAT此字符串CREATE ASSEMBLY語句。
代碼是用一個小的DLL程序集編寫的。

1

我只是驚喜地發現的Visual Studio 2013將自動生成與在CREATE ASSEMBLY調用中使用,當你建立一個SQL CLR項目比特串中的SQL腳本。

生成項目,然後在bin文件夾解壓使用DacUnpack.exe的「* .dacpac」文件。在解壓縮的文件夾中查找「model.sql」。它包含一個CREATE ASSEMBLY調用看起來像這樣:

CREATE ASSEMBLY [MyFunctions] 
AUTHORIZATION [dbo] 
FROM 0x4D5A90000[very long string here...]; 
相關問題