強命名程式集私有部署和全域性部署都可以,非強命名程式集則只可以私有部署。
和應用程式部署在同乙個目錄下的程式集稱作私有部署程式集。私有部署給程式設計師帶來方便。安裝(複製),移動,解除安裝(刪除)都很簡單。
如果不太可能被共享,強命名程式集應該用私有部署。
如果乙個程式集要被多個應用程式訪問,那麼必須放在乙個clr確知的目錄內,這個已知的目錄稱作全域性程式集快取(gac),通常在c:/windows/assembly/gac
在開發和測試時,向gac安裝強命名程式集最常用gacutil.exe
在發布時,因為gacutil.exe工具沒有和面向終端的.net框架分發包一起發布,所以必須使用2.0版本以上的windows安裝器(msi)
1. 當前工作目錄
2. 編譯器目前使用的clr所在目錄(與gac中程式集中相同,兩份拷貝),mscorlib.dll總是包含在這目錄內。一般在c:/windows/microsoft.net/framework/v1.0.3427
3. 任何用csc.exe的/lib命令列開關指定的目錄。
4. 任何lib環境變數中指定的目錄。
clr所在目錄中的拷貝使得我們能夠方便的生成自己的程式集。而gac中的拷貝用於執行時載入這些程式集檔案。
1. gac中定位
2. 應用程式自基目錄
3. 配置檔案(***.exe.config)中標識的私有路徑中查詢
4. 如果用msi安裝,clr將要求msi定位程式集。
生成乙個強命名程式集時,該程式集的filedef清單檔案資料表將包含該程式集所有檔案的乙個列表。每個檔案的名稱被加入時都被轉換成乙個雜湊值,該雜湊值與檔名一起存入filedef
在生成有清單的pe檔案後,該pe檔案整個內容被轉換為乙個雜湊值(雜湊演算法:sha-1),再經由私有金鑰簽名,生成rsa數字簽名儲存在pe檔案的乙個保留區。
最後,pe檔案的clr表頭被更新以反映數字簽名在檔案中的嵌入位置。另外公有金鑰(完整的)嵌入pe檔案的assemblydef檔案清單中。
當程式集被安裝到gac中時,系統將對包含清單的檔案內容進行雜湊轉換,然後與嵌入pe檔案的rsa數字簽名進行比較,若不同,則被篡改。另外系統還會對其他檔案的內容進行雜湊轉換,然後與清單檔案中filedef表內儲存的雜湊值進行比較。
另:當強命名程式集是從非gac的地方載入時,clr會在程式集被載入時比較雜湊值,也就是說每次執行都會計算雜湊值。
docker私有倉庫harbor的部署和使用
搭建docker環境,可以檢視我之前的部落格 docker ce和docker composer的安裝 官方安裝文件參考 解壓tar xf harbor offline installer v1.7.5.tgz 配置,修改harbor.cfg,這幾項是必須配置的。其他可選,建議配置https訪問,因...
NPM私有包部署到私有倉庫
賬號登入 npm login登入成功用 npm who am i進行驗證 初始化npm庫 npm init然後依次輸入相應的引數,其中version必填,最後生成的pagkage如下圖 在pagkage同級寫乙個測試檔案,向外暴露介面 至此,乙個npm包建立完成 發布共有npm包 npm publi...
owncloud 私有雲部署實戰
基於centos 5.6 64bit lamp整合系統。系統要求 php5 5.3 php5 json php xml php mbstring php5 zip php5 gd 可選 php5 sqlite 3 curl,libcurl3,libcurl3 dev,php5 curl,php pd...