2016-06-06 4 views
0

을 실패하면 내가 인해 빌드 환경 사이에 약간의 차이로 NuGet 패키지 MSBuild.ExtensionPack은 MSBuild - 작업이

<MSBuild.ExtensionPack.Framework.CommandLine Command="&quot;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe&quot; sign &quot;/n&quot; &quot;MY CERTIFICATE&quot; &quot;/t&quot; &quot;http://timestamp.comodoca.com/authenticode&quot; &quot;$(TargetPath).&quot;" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' " /> 

를 통해 signtool.exe를 사용하여 DLL을 서명 AfterBuild 작업이 다른 작업을 실행합니다 (일부는 원격 에이전트가 다른이 구축 Visual Studio 및 Windows SDK 버전) 에이전트가 SDK 버전 8.0을 설치하면이 작업이 실패합니다.

작업이 실패한 경우에만 다른 작업을 트리거 할 수 있습니까? 위의 작업이 실패 할 경우

즉, 대체 솔루션으로 signtool.exe

답변

1

에 다른 경로가 다른 작업을 실행, 내가 볼 수있는 최신 버전을 가능한 경로를 확인하고 사용하려면 다음과 같이 올라와있다 :

<PropertyGroup> 
    <SignToolPath Condition="'$(Configuration)' == 'Release' And '$(SignToolPath)' == '' And Exists('C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe')">C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe</SignToolPath> 
    <SignToolPath Condition="'$(Configuration)' == 'Release' And '$(SignToolPath)' == '' And Exists('C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe')">C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe</SignToolPath> 
    <SignToolPath Condition="'$(Configuration)' == 'Release' And '$(SignToolPath)' == '' And Exists('C:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe')">C:\Program Files (x86)\Windows Kits\8.0\bin\x64\signtool.exe</SignToolPath> 
    <SignToolPath Condition="'$(Configuration)' == 'Release' And '$(SignToolPath)' == '' And Exists('C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe')">C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe</SignToolPath> 
    <SignToolPath Condition="'$(Configuration)' == 'Release' And '$(SignToolPath)' == '' And Exists('C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe')">C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe</SignToolPath> 
    <SignToolPath Condition="'$(Configuration)' == 'Release' And '$(SignToolPath)' == '' And Exists('C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\signtool.exe')">C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\signtool.exe</SignToolPath> 
    <SignToolPath Condition="'$(Configuration)' == 'Release' And '$(SignToolPath)' == '' And Exists('C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe')">C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe</SignToolPath> 
    <SignToolPath Condition="'$(Configuration)' == 'Release' And '$(SignToolPath)' == '' And Exists('C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe')">C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe</SignToolPath> 
</PropertyGroup> 
<Error Condition="'$(Configuration)' == 'Release' And '$(SignToolPath)' == ''" Text="Unable to determine signtool path" /> 
<MSBuild.ExtensionPack.Framework.CommandLine Command="&quot;$(SignToolPath)&quot; sign &quot;/n&quot; &quot;MY CERTIFICATE&quot; &quot;/t&quot; &quot;http://timestamp.comodoca.com/authenticode&quot; &quot;$(TargetPath).&quot;" Condition=" '$(Configuration)' == 'Release' " /> 
0

당신은 ContinueOnError="true"와 작업을 표시 한 다음 작업 성공 여부를 확인하기 위해 MSBuildLastTaskResult 예약 속성을 사용할 수 있습니다. 그런

뭔가 :

<MSBuild.ExtensionPack.Framework.CommandLine 
    ContinueOnError="true" 
    Command="path_to_signtool.exe" 
    .... /> 
<MSBuild.ExtensionPack.Framework.CommandLine 
    Condition="'$(MSBuildLastTaskResult)' == 'False'" 
    Command="another_path_to_signtool.exe" 
    .... /> 

this answer

를 참조하십시오