未能加載文件或程序集“Jonckers.Service.RedisCacheEngineExtend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個依賴項。需要強名稱程序集。 (異常來自 HRESULT:0x80131044)
強名稱簽名的方法:
強簽名:
-
可以將強簽名的dll注冊到GAC,不同的應用程序可以共享同一dll。
-
強簽名的庫,或者應用程序只能引用強簽名的dll,不能引用未強簽名的dll,但是未強簽名的dll可以引用強簽名的dll。
-
強簽名無法保護源代碼,強簽名的dll是可以被反編譯的。
-
強簽名的dll可以防止第三方惡意篡改。
管理員方式運行
生成snk
SN -k C:\qiny.snk
然后拷貝到程序集去
然后查看屬性,找到簽名 tab,選擇那個snk文件
此時,該密鑰對並未與項目的程序集建立關聯,我們需要打開項目(Project)的AssemblyInfo.cs 文件。此文件具有一個程序集屬性列表,默認情況下,在 Visual Studio .NET 中創建項目時將包括這些屬性。在代碼中修改名為“AssemblyKeyFile”的屬性,如下所示:
[assembly:AssemblyKeyFile("ayui.snk")]
這樣,編譯該項目即生成強命名的程序集。
然后找個工具簡單混淆下代碼,就可以發布你的dll給別人用了,真的有人想破解你的,你也是沒辦法
在VS.NET 的命名行窗口下,輸入如下的代碼。
1 ,生成一個KeyFile
sn -k keyPair.snk
2, 得到程序集的MSIL
ildasm SomeAssembly.dll /out:SomeAssembly.il
3 ,為了避免沖突,把原來的DLL 文件改名
ren SomeAssembly.dll SomeAssembly.dll.orig
4 , 使用導出的MSIL 和剛創建的KeyFile 生成一個新的的DLL 文件。
ilasm SomeAssembly.il /dll /key= keyPair.snk
這些工具都在哪里?(如果直接在命令行下執行的話,可能需要將下面的路徑加入到path里)
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe