2012-11-15 32 views
8

Tôi đang chạy Visual Studio 2012 và viết dịch vụ web phụ trợ và phần mềm máy tính để bàn trong các giải pháp riêng biệt. Vì phần mềm máy tính để bàn cần chạy cao ("là quản trị viên"), tôi cần chạy giải pháp máy tính để bàn trong phiên bản Visual Studio được nâng cao. Cả hai giải pháp bao gồm một dự án thư viện đã ký.Sử dụng phụ thuộc đã ký trong hai phiên bản Visual Studio, một cao cấp/quản trị viên, một thông thường

Khi tôi mở các giải pháp dịch vụ web trong một Studio dụ trực quan mà không cần nâng nó lên, tôi nhận được một lỗi build như

Không thể nhập các tập tin quan trọng sau đây: Redacted.pfx. Tệp khóa có thể được bảo vệ bằng mật khẩu. Để sửa lỗi này, hãy thử nhập lại chứng chỉ hoặc cài đặt chứng chỉ theo cách thủ công vào CSP tên mạnh với tên vùng chứa khóa sau: VS_KEY_Redacted.

Khi tôi cố gắng sửa lỗi này by doing that, thông báo lỗi cho biết khóa đã tồn tại.

Khi tôi cố gắng loại trừ và sau đó bao gồm lại tệp PFX không đặt đúng, nhưng làm cho danh sách thả xuống "tệp tên khóa mạnh" trong Thuộc tính dự án → Ký trống. Sau đó, giải pháp dịch vụ web được xây dựng, nhưng có vẻ như thư viện không được ký kể từ trong giải pháp máy tính để bàn (cao), xây dựng thất bại với "Thế hệ hội tụ không thành công - Tham chiếu assembly 'được biên tập lại" không có tên mạnh ".

Nếu tôi cố gắng chọn các tập tin PFX một lần nữa từ menu thả xuống trong các giải pháp dịch vụ web (và nhập lại mật khẩu), tôi nhận được:

Lỗi khi nhập key
Một cố gắng đã được thực hiện để tham khảo một mã thông báo không tồn tại

Đặt tệp PFX từ (cao) máy tính để bàn giải pháp hoạt động, nhưng trả về tôi cho hình vuông.

Dường như tùy thuộc vào độ cao, Visual Studio sẽ tìm trong các cửa hàng khóa khác nhau để truy cập vào bất kỳ thứ gì mở khóa PFX. Tôi có phải chạy cả hai trường hợp của Visual Studio nâng cao để làm việc xung quanh vấn đề hoặc tôi có thể bằng cách nào đó nói với nó để tìm trong cùng một vị trí?

+0

nó có hoạt động nếu bạn bao gồm AssemblyKeyFile được mã hóa cứng? – cppanda

+0

Có lý do nào bạn không muốn chạy cả "Quản trị viên"? - dường như làm cho tất cả các dấu hiệu của tôi bị mất đi, và nhược điểm duy nhất tôi thấy là bạn cần tạo một mục đăng ký để chia sẻ ngữ cảnh (tức là các ổ đĩa được ánh xạ và như vậy) hoạt động đúng. [FYI, chi tiết về mục đăng ký có thể được tìm thấy ở đây: http://www.winability.com/how-to-make-elevated-programs-recognize-network-drives/] – BrainSlugs83

+0

Tôi hiện đang chạy cả Quản trị viên và điều đó sửa nó. Mối quan tâm của tôi là tôi muốn chạy với ít biến đổi nhất có thể trên tất cả các dự án của mình và vì một số hoạt động tốt mà không cần đặc quyền nâng cao, càng ít càng tốt mà không cần chạy với tư cách Quản trị viên. Microsoft đã ít nhiều bị hỏng khả năng thiết lập Visual Studio luôn luôn chạy cao (tôi đã nhận được gần nhưng nó phá vỡ các giải pháp nhấp đúp) và bạn không thể luôn luôn có được bằng cách chạy Visual Studio mà không có độ cao. – Jesper

Trả lời

0

nhận xét của @ ccpanda giải quyết vấn đề này. Bao gồm một kho lưu trữ AssemblyKeyFile làm cho tác phẩm này. Ví dụ:

[assembly: AssemblyKeyFile("HerpDerpWarblerManagementStudioProTM.snk")] 

Dài và ngắn gọn là hai Visual Studio sẽ giả định những thứ khác nhau tùy thuộc vào chế độ của chúng. Giải pháp không phải là để làm cho họ giả định cùng một điều, đó là để nói cho họ biết phải làm gì.

(Tôi đã chọn sử dụng tệp .snk vì đó là cách bạn phải thực hiện nếu bạn không muốn nhập lại mật khẩu mỗi lần mọi nhà phát triển khác cố xây dựng. This question has a lot more information. Về cơ bản, bạn có hoặc là sử dụng một tập tin .snk hoặc làm cho quá trình xây dựng của bạn biên dịch và sau đó đăng các tập tin với một lời gọi sn.exe rằng bằng cách nào đó sẽ biết sử dụng một tập tin .pfx for everyone)

(@ccpanda:. Nếu bạn viết nhận xét của bạn như một câu trả lời (và có thể bạn đã làm và Stack Overflow giúp quyết định nó là tầm thường), tôi sẽ đánh dấu nó như là một câu trả lời.)