2017-06-06 64 views
1

我試圖爲強命名的程序集編寫一些單元測試。單元測試位於UnitTests項目中,代碼位於Plugins項目中,它們都是同一解決方案的一部分。插件強烈簽名。 UnitTests有一個插件的參考,一切都很好地編譯。單元測試在C#中籤署的程序集#

當我嘗試運行測試的測試失敗,一個例外,「無法加載文件或程序集...強名稱驗證失敗」

如果我停用簽署插件的測試工作,但簽約是需要如何使用插件。我該如何解決這個問題?

+0

您是否嘗試過簽署測試項目? –

+0

@MichaelCoxon我也嘗試過簽署測試項目。使用相同的密鑰,不會改變錯誤。 – Ceribia

+0

我想你可以用[sn.exe -vR](https://stackoverflow.com/questions/1845222/how-to-use-sn-exe-vr)將它關閉,但我記不起語法.. – stuartd

回答

0

這最終是我遇到的另一個錯誤的結果。有時,在構建插件時,構建會失敗,並且

程序集簽名失敗;輸出可能未被簽名 - 簽署程序集時出錯 - 進程無法訪問該文件,因爲它正在被另一個進程使用。

重新構建會更經常地修復此錯誤。事實證明,在第二個版本上,Plugins.dll有時會保留並且只能延遲簽名。 UnitTests會採取這個延遲簽署的DLL,並可以理解的抱怨。

要檢查這是否是您正在運行的問題,請打開開發人員命令提示符並運行「sn -vf Plugins.dll」。如果輸出是「Plugins.dll是延遲簽名或測試簽名的程序集」,那麼您可能會遇到一些問題。

我使用的解決方法是重複嘗試簽名Plugins.dll,直到它工作。要做到這一點,我第一次運行:

SN -i ../../FakeXRMTesting.pfx keyContainer

要設置密鑰容器所以SN不用密碼可以工作。接下來,我設置Plugins.dll到只能推遲註冊,並增加了生成後事件

:重複

C:\ 「程序文件(x86)」 \ 「微軟的SDK」 \的Windows \ v8.0A \ bin \「NETFX 4.0工具」\ sn.exe -Rc Plugins.dll keyContainer || goto:重複

正常情況下,它在工作前會失敗4-5。這顯然是一個混亂,並停止任何程序訪問該DLL從這樣做將是首選。

+1

無論您使用何種反惡意軟件產品,現在都應該購買另一款產品。 –

+0

@HansPassant很可能,但我目前沒有權限證明它。一旦我證明這是罪魁禍首,我會更新。 – Ceribia