I가 다음과 같은 구조의 닷넷 솔루션 :인증 코드 서명 - 단지 내 어셈블리에 서명
- a.exe를
- thirdParty.dll
I B.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의.
이제 가장 간단한 해결책은 bld에 대한 빌드 후 이벤트를 csproj 파일에 넣고 위에 나온 for 루프를 제거하는 것입니다. 그러나 실제적인 측면에서 우리는 많은 어셈블리를 가지고 있으며 아마도 더 많은 것을 추가 할 것입니다. Authenticode에 포스트 빌드 단계를 추가하여 다른 어셈블리에 서명하는 것을 기억하는 다른 개발자에게 의존하고 싶지는 않습니다.
here으로 설명한 PowerShell 스크립트를 사용하여 관리되는 어셈블리에만 서명 할 수는 있지만 위의 예에서 thirdParty.dll에도 서명합니다.
내 코드가 포함 된 어셈블리 만 열거하고 서명하려면 어떻게합니까?
감사합니다.하지만 여러 타사 라이브러리를 사용합니다. 이 솔루션은 실제로 모든 새로운 라이브러리에 대해 빌드 후 스크립트를 수동으로 업데이트해야한다는 점을 기억해야합니다. – Tom
@Tom을 사용하려면 새 라이브러리가 아닌 타사 라이브러리에 대한 빌드 이후 스크립트를 수동으로 업데이트해야합니다. Visual Studio는 dll 파일이 타사 라이브러리인지 알기에 충분히 똑똑하지 않기 때문에 그렇게해야합니다. –