2012-05-14 30 views
0

在Windows 8使用者預覽版上使用Visual Studio 11測試版。使用WINMD庫會導致強名稱驗證異常

問題是:如果嘗試使用其輸出類型設置爲WinMD的類庫中的類,則會出現一個安全異常,指出「強名稱驗證」失敗(HRESULT的異常:0x8013141A)。我只是試圖使用Visual Studio運行(F5)一個小測試應用程序。

如果將輸出類型設置爲「類庫」,問題就消失了。一個小的(和相當瑣碎)測試項目可以在這裏找到:

http://download.tallcomponents.com/WinRTApplication3.zip

我已經設置了「登錄大會」標誌的類庫,使用新生成的.snk文件(沒有密碼)。對產生的ClassLibrary1.winmd文件運行SN室顫顯示:

ClassLibrary1.winmd是一個延遲簽名或測試簽名組裝

所以也許這個問題基本上是輸出一直沒有「正確」的簽訂?我只是不知道該怎麼做才能解決這個問題,因爲我已經指定了需要簽名的類庫,我也不明白爲什麼只有在輸出到WinMD文件時纔會發生這種情況。我現在假設我不需要一個「官方」證書來進行調試和測試。

那麼,如果這是一個初學者的問題,那麼還是要說我很抱歉。我試圖「谷歌」的答案,但我主要得到的點擊超過2年,谷歌建議「風」,而不是winmd ...

甚至不能創建一個新的標籤「winmd」在這裏...(沒有足夠的信譽)

回答

1

如果您在winmd文件上遇到嚴重的名稱驗證錯誤,通常是因爲您使用的工具集不能理解.winmd文件格式。

.winmd文件不能被強名稱簽名。

在這種情況下,可能是因爲您試圖對組件庫進行強名稱簽名而導致問題--C#組件庫會生成包含Windows元數據和C#IL的混合.winmd文件。

你爲什麼要強調你的組件簽名?將組件放入GAC並且.winmd文件無法插入GAC時,主要使用強名稱簽名。

+0

這很有趣。如果我在Visual Studio中關閉「簽署程序集標誌」,則異常消失。 –

+0

我之所以使用它的原因基本上是我們想要創建一個組件供其他人使用,所以結果不知何故必須在某個時刻進行簽名。請注意,我的工具集只包含Visual Studio。我認爲它理解winmd。感謝您改變我的觀點。 –

+0

那麼萬一有人遇到這個問題:選擇輸出類型「類庫」迫使你簽署彙編。隨後選擇輸出類型「WinMD」不會讓編譯器抱怨,但會導致強名稱驗證異常,除非您再次關閉簽名。 –

相關問題