多年來,我們一直將我們的強名密鑰保存在一個關鍵容器中。 Visual Studio中不直接支持,但是,它工作正常,如果你只是編輯的.csproj文件,並添加:當我重新啓動時,爲什麼我會丟失密鑰容器?
<KeyContainerName>MyKeyName</KeyContainerName>
我們做安裝鑰匙插入鑰匙店:
sn -m Y
sn -i MyKeyFile.snk MyKeyName
我們然後可以從該機器中刪除MyKeyFile.snk,並且該密鑰更安全一些。
最近,這已成爲重新啓動後的問題。我們懷疑問題是由VS 2015引入的,但它可能是由Windows 8和/或10引起的。我們將密鑰安裝到密鑰容器中,並且一切正常。然後,我們重新啓動這臺機器,並建立失敗:
CSC : error CS7028: Error signing output with public key from container 'MyKeyName' -- Keyset does not exist (Exception from HRESULT: 0x80090016)
它看起來像密鑰容器在重啓丟失,但,如果我們這樣做:
sn -m Y
sn -i MyKeyFile.snk MyKeyName
它失敗:
Failed to install key pair -- Object already exists.
我們必須用sn -d刪除密鑰容器,然後將其添加回來,Visual Studio很高興。
這是怎麼回事?爲什麼Visual Studio在重新啓動後無法看到我們的密鑰容器,因爲sn可以看到它?關鍵容器實際存儲在哪裏?