2016-02-11 47 views
0

幾個星期前,我跑這沒有任何錯誤(只是正常的警告):如何在創建PIA時避免TlbImp.exe錯誤TI1021?

tlbimp TypeLibrary.tlb /primary /out:My.Made.Up.Name.dll 

從那時起,我已經運行Windows Update(獲取更新的幾個月)。

但是現在,當我運行相同的命令:

tlbimp TypeLibrary.tlb /primary /out:My.Made.Up.Name.dll 

我得到:

TlbImp : error TI1021 : Primary interop assemblies must be strongly named. This 
can be accomplished by using either the /publickey, /keyfile or /keycontainer op 
tions. 

是否可能TLBIMP的行爲已更改爲更新的結果,或者是有一些其他的原因,我不能再運行tlbimp?

我上次肯定沒有密鑰文件,所以我不確定爲什麼我這次可能需要密鑰文件。

+1

嗯,不,Windows Update沒有移動奶酪。沒有強名的PIA就像一個不回來的回力球,它是一根棍子。更有可能的是你之前沒有使用/ primary選項。他們很少需要。尤其是不是今天,PIA在過去的6年裏已經過時了。徹底和優雅地被「嵌入互操作類型」功能取代。 –

+0

我想有一個*機會*我省略了/小學,但我確信我沒有。我嵌入類型,所以我沒有將PIA作爲解決方案本身的一部分來發布,但我確實需要將PIA提交到Git repo,所以其他貢獻者可以構建解決方案。我已經提交了一個這樣的PIA,並且回購仍在構建,所以我猜這意味着我*使用/ primary? – ThunderFrame

回答

0

所以,我跑ILDASM對DLL,發現根本沒有什麼主互標誌在場,所以按照@Hans帕桑特的評論,奶酪並沒有感動......

必須有省略了/ primary參數。