2012-10-25 38 views
8

Tôi đã tải xuống mã DotNetOpenAuth mới nhất từ ​​GitHub và ban đầu nó không thể xây dựng được. Tôi cố định vấn đề bằng cách chạy như sau:DotNetOpenAuth biên dịch sau khi sửa đổi nhưng ném ngoại lệ thời gian chạy khi chạy dự án mẫu

sn -Vr *,2780ccd10d57b246 

tìm thấy ở đây:

http://www.dotnetopenauth.net/developers/contributing/quickstart-environment/

tôi đã đi trước và đã làm một số sửa đổi để các DotNetOpenAuth.AspNet dự án. Nó biên dịch tốt. Sau đó, tôi đã tạo một dự án web MVC 4 dưới các mẫu để kiểm tra các thay đổi của tôi. Giải pháp được biên dịch lại. Tuy nhiên ngay sau khi tôi nhấp vào gỡ lỗi, tôi nhận được màn hình màu vàng chết của ASP.NET với lỗi sau:

Không thể tải tệp hoặc lắp ráp 'DotNetOpenAuth.AspNet' hoặc một trong các phụ thuộc của nó. Không thể xác minh chữ ký tên mạnh. Việc lắp ráp có thể đã bị giả mạo, hoặc nó bị trì hoãn ký nhưng không được ký đầy đủ với khóa riêng chính xác. (Ngoại lệ từ HRESULT: 0x80131045)

Dự án MVC 4 được tạo ra từ các mẫu rỗng, vì vậy không có tham chiếu đến Microsoft.Web.WebPages.OAuth

tôi đang thiếu gì? Tôi đã hoàn thành phần còn lại của các bước tìm thấy trong các liên kết ở trên:

sn -k mykeyfile.pfx 
sn -i mykeyfile.pfx mykeycontainer 
sn -p mykeyfile.pfx mykeyfile.pub 
sn -q -t mykeyfile.pub 
sn -Vr *,<YourPublicKeyTokenHere> 

và cũng sửa đổi các tập tin \ tools \ DotNetOpenAuth.props, đặc biệt là dòng: 27,29,30 với các giá trị mới

26. <SignAssembly>true</SignAssembly> 
27. <PublicKeyFile Condition="'$(PublicKeyFile)' == ''">$(ProjectRoot)src\official-build-key.pub</PublicKeyFile> 
28. <AssemblyOriginatorKeyFile Condition="'$(AssemblyOriginatorKeyFile)' == ''">$(PublicKeyFile)</AssemblyOriginatorKeyFile> 
29. <KeyPairContainer Condition="'$(KeyPairContainer)' == ''">DotNetOpenAuth</KeyPairContainer> 
30. <PublicKeyToken>2780ccd10d57b246</PublicKeyToken> 
31. <DelaySign>true</DelaySign> 
32. <SignedSubPath>signed\</SignedSubPath> 

Trả lời

6

Sửa đổi tệp đạo cụ không cần thiết. Sự cố có thể là bạn đang sử dụng máy 64 bit và lệnh sn mà bạn đã chạy chỉ ảnh hưởng đến đăng ký 32 bit. Sau đó, tại thời gian chạy bạn thất bại vì bạn đang chạy trang web trên đăng ký 64-bit, mà không có mục nhập xác minh bỏ qua trong đó.

Cách "đúng" để thực hiện việc này là cài đặt Windows SDK 64 bit để bạn có được sn.exe 64 bit và chạy lệnh đó. Tuy nhiên, đây là cách nhanh và dễ dàng:

Kiểm tra giá trị của key reg của bạn: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,2780ccd10d57b246

và sao chép mà quan trọng hơn để

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\*,2780ccd10d57b246

Sau đó khởi động lại tất cả các quá trình có liên quan (MSBuild .exe, devenv.exe, iis, WebDAV, hoặc bất cứ điều gì đó là lưu trữ trang web của bạn và báo cáo lỗi). Nó sẽ bắt đầu làm việc cho bạn.

+0

cảm ơn! Tôi đã đấu tranh với điều này trong một thời gian. – epignosisx

+0

Tôi đã có tình huống ngược lại: sn.exe đã thêm khóa vào HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ StrongName \ Verification \, nhưng IIS7 bị ảnh hưởng bởi HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ StrongName \ Verification \. Cảm ơn câu trả lời! –

+0

VS2015 có sử dụng x64 hay x64 sn.exe không? Bởi vì nó vẫn đưa ra một lỗi. Nhưng tinh chỉnh registry hoạt động. – Legends

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