我有一個.NET解決方案具有以下結構:驗證碼簽名 - 只有我簽字組件
- A.EXE
- B.DLL
- thirdParty.dll
我希望Authenticode簽署我自己的二進制文件(a.exe和b.dll)。
我現在有A.EXE上的csproj文件生成後事件:
"C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /t http://timestamp.globalsign.com/scripts/timestamp.dll /a $(TargetPath)
for %%f in ("$(ProjectDir)$(OutDir)*.dll") do "C:\Program Files (x86)\Windows Kits\10\bin\x86\signtool.exe" sign /t http://timestamp.globalsign.com/scripts/timestamp.dll /a $(TargetPath) %%f
然而,這將簽署所有的DLL,包括thirdParty.dll和運行也試圖簽署任何風險未管理的DLL。
現在最簡單的解決方案是將後生成事件放在b.dll的csproj文件中,並刪除上面顯示的for循環。但是,實際上我們有很多組件,並且可能會增加更多。我不想依賴其他開發人員記住添加一個構建後步驟到Authenticode簽署任何新的程序集。
我可以使用描述爲here的PowerShell腳本來簽署託管程序集,但在上例中仍會標記thirdParty.dll。
如何枚舉並標記包含自己的代碼的程序集?
謝謝,但我們依靠多個第三方庫。這個解決方案實際上有同樣的問題,我們需要記住手動更新每個新庫的後構建腳本。 – Tom
@Tom,您需要記住手動更新第三方新庫的後構建腳本,而不是每個新庫。看起來你必須這樣做,因爲Visual Studio不夠聰明,不知道哪個dll文件是第三方libray。 –