2009-09-04 23 views
22

Lý do tôi muốn ký vào dll là vì tôi muốn thêm nó vào Bộ đệm ẩn toàn cục. Assembly là một css parsing engine được viết bằng Java và được chuyển đến J #. Tôi sử dụng VS2008 vì vậy tôi không thể thực hiện các dự án J #. Nó không có một phím tên mạnh được gán cho nó và tôi không có ý tưởng làm thế nào để làm điều đó ngay bây giờ mà nó được xây dựng.Làm thế nào tôi ký một bản lắp ráp đã được tích hợp vào một dll cụ thể flute.dll

Bất kỳ ai có ý tưởng nào?

+1

Tôi phải hỏi - tại sao bạn muốn cài đặt nó trong GAC? Ngay cả với các hội đồng được sử dụng bởi nhiều trang web trên cùng một máy chủ, chúng tôi đã đưa vào thói quen (có thể nghi vấn) cho phép mỗi trang web/ứng dụng giữ bản sao riêng trong thư mục bin của nó. Điều này đảm bảo rằng ứng dụng web luôn có phiên bản được xây dựng và mong đợi, đồng thời làm cho việc triển khai và khôi phục trở nên đơn giản vì không có phụ thuộc nào nằm ngoài hệ thống phân cấp thư mục web. –

+0

Vâng nhưng bất cứ cách nào tôi có quyền của tôi có dây của tôi Website triển khai dự án cho tôi một cảnh báo mỗi khi tôi biên dịch nói rằng nó không có quyền để di chuyển dll. Nó đưa ra cảnh báo tương tự về TFS Build. Tôi đang cố gắng loại bỏ tất cả các cảnh báo của mình. FXCop được bao gồm. –

Trả lời

41

Sau một chút tìm kiếm, tôi đã tìm thấy this post giải thích một cách để thực hiện điều đó.

Exerpt:

Từ một dấu nhắc lệnh VS.NET, nhập dữ liệu sau:

  1. Tạo một keyfile: sn -k keyPair.snk
  2. Lấy MSIL cho hội đồng được cung cấp: ildasm được cung cấpAssembly.dll /out:providedAssembly.il
  3. Rename/di chuyển lắp ráp ban đầu: ren providedAssembly.dll providedAssembly.dll.orig
  4. Tạo một hội đồng mới từ đầu ra MSIL và keyfile lắp ráp của bạn: ILASM providedAssembly.il/dll/key = keyPair.snk
+0

Tôi đã thử làm việc đó trước và không thể, bạn có thể giải thích cách –

+0

Tôi đã chỉnh sửa câu trả lời của mình bằng một cách tiếp cận khác không. – PJ8

+0

cảm ơn tải, làm việc như một say mê :) –

1

Strong Name tool có thể ký lại một hội đồng hiện có bằng tùy chọn -R. Tuy nhiên, từ những gì tôi hiểu, hội đồng phải được ký trước hoặc ký trễ ... không chắc chắn bạn có thể sử dụng nó với một hội đồng chưa ký, nhưng bạn có thể thử nó

18

Bước 1: Tháo lắp ráp lắp ráp

ildasm myTest.dll /out:myTest.il 

Bước 2: Re-lắp ráp sử dụng của bạn mạnh tên tuổi chủ chốt

ilasm myTest.il /res:myTest.res /dll /key:myTest.snk /out:myTestSN.dll 

Để xác minh bạn có thể sử dụng sau com mand:

sn -vf myTestSN.dll 

Hy vọng điều này sẽ hữu ích!

3

Liên kết này cũng cho thấy làm thế nào để làm điều đó, kể cả khi một trong những cụm bên thứ 3 bạn đang đăng có một tham chiếu đến một lắp ráp unsigned mà bạn đang đăng:

http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing

Edit: xin lỗi , liên kết bị vỡ.

+0

Liên kết bị hỏng! Thay thế: https://github.com/OJ/buffered.io-hugo/blob/master/content/post/2008-07-09-net-fu-signing-an-unsigned-assembly-without-delay-signing. markdown – AstralisSomnium

0

Thx đặc biệt là PJ8 để đăng câu trả lời cách đây 8 năm mà vẫn lưu tôi hôm nay. "My" hội đồng cần thiết để đi trong GAC nhưng phụ thuộc vào SQLite-pcl-net mà như của phiên bản 1.3.1 không phải là mạnh mẽ tên mặc dù nó bây giờ phụ thuộc vào tên mạnh mẽ SQLitePCLRaw.bundle_green.Vì vậy, tôi đã phải ký SQLite-pcl-net để ký hội đồng của riêng tôi nói cách khác. Tôi đã kết thúc với một tập tin .bat-to-grave .bat hợp nhất từ ​​thông tin trong bài đăng này và một vài nơi khác mà tôi đã đi hôm nay. Các "thuận" là 1. rằng điều này .bat chạy trong vị trí của hội đồng mà bạn muốn đăng ký 2. cho thấy ít nhất một gợi ý là nơi mà ba công cụ có thể được đặt trên một máy dev. 3. hiển thị tất cả các bước theo thứ tự. "Con" tất nhiên là mileage của bạn có thể khác nhau như nơi ildasm, ilasm và sn thực sự nằm trên PC cụ thể của bạn. Dù sao đi nữa.

REM Create a new, random key pair 
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -k SQLite-net.snk 
REM Store the key in the container MySQLiteKeys in the strong name Cryptographic Services Provider (CSP). 
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -i SQLite-net.snk MySQLiteKeys 
REM Disassemble to Intermediate Language 
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\ildasm" SQLite-net.dll /out:SQLite-net.il 
REM Rename original file 
ren SQLite-net.dll SQLite-net.dll.orig 
REM Reassemble to a strong-named version 
"c:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm" SQLite-net.il /dll /key=SQLite-net.snk /out:SQLite-net.dll 
REM Verify the assembly 
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -v SQLite-net.dll 
REM Deletes MySQLiteKeys from the default CSP 
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -d MySQLiteKeys 
REM View results 
pause 
+0

(Xin cảm ơn trước vì đã chỉnh sửa phong cách. Tôi đã cố gắng thực sự để tìm định dạng bản trình bày chính xác nhưng tôi nghĩ mình đã bỏ lỡ.) – IVSoftware

Các vấn đề liên quan