2015-06-05 70 views
9

我有很多的麻煩試圖簽署F#類庫項目。 首先,我已經試過這thread,使用AssemblyKeyFileAttribute但沒有成功。 我也試圖旗「--keyfile:keyfile.snk」添加到項目的屬性(在「生成」選項卡「其它標誌」字段),它也是我以前不工作。我使用的是Visual Studio 2013,它不像C#類庫項目那樣顯示「簽名」選項卡。簽署F#大會

所有的嘗試導致以下錯誤:

FSC:錯誤FS2014:發生寫入二進制「OBJ \發佈\ ExcelFinancialFunctions.dll」一個問題:到StrongNameGetPublicKey調用失敗(值不在範圍內在預期的範圍。)

我在做什麼錯?

回答

6

FWIW,這裏就是我的簽名ZeroToNine:不要使用Visual Studio的,我這樣做是作爲構建腳本的一部分。從本質上講,它是通過使用AssemblyOriginatorKeyFileSignAssembly完成:

MSBuild.exe /property:AssemblyOriginatorKeyFile=mykey.snk /property:SignAssembly=true 

你可以看到(幾乎)在ZeroToNine回購的所有細枝末節,包括the actual build script I use for signing。公共回購中唯一缺少的細節是實際的.snk文件,因爲如果公開提供強名稱密鑰是沒有意義的。

這是我如何調用構建腳本擊:

build-release.sh ../ZeroToNine.snk 

正如你所看到的,我有我的.snk文件駐留在回購之外,並把它作爲參數傳遞給腳本。

+0

這是一個很好的解決方案確實如此。我不知道msbuild有它自己的簽名機制,但是我設法用ilmerge解決了簽名問題(彙編鏈接器 - al did not working too!),儘管這不是ilmerge的目的。由於這是比我的更好的解決方案,我會將其標記爲正確的答案。謝謝! –