ошибки во время задачи dotfuscator 4.5 с TFS Build (Team Build с TFS 2008) - PullRequest
1 голос
/ 24 июня 2010

Я вызываю задачу dotfuscator через TFS Build aka Team Build, взятую из - = Задача Dotfuscator с Team Build = - * и получаю следующую ошибку:

Build FAILED.


(AfterCompile target) -> 

error MSB4061: The "Dotfuscate" task could not be instantiated from the assembly "C:\Program Files\MSBuild\PreEmptive\Dotfuscator\4.0\PreEmptive.Dotfuscator.Tasks.dll". 

error MSB4061: System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.

error MSB4061:    at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)

error MSB4061:    at System.Windows.Forms.Form.ShowDialog()
error MSB4061:    at PreEmptive.Tasks.Dotfuscate.b()
error MSB4061:    at PreEmptive.Tasks.Dotfuscate.a()
error MSB4061:    at PreEmptive.Tasks.Dotfuscate..ctor()
error MSB4060: The "Dotfuscate" task has been declared or used incorrectly, or failed during construction. Check the spelling of the task name and the assembly name.

    0 Warning(s)
    2 Error(s)

Код, относящийся к dotfuscator в dotfuscator, выглядит следующим образом:

  <!---
  All Dotfuscation Stuff here...
  -->

  <PropertyGroup>
    <ConfigPath>$(SolutionRoot)\..\$(BuildDefinitionPath)\BuildType\dotfuscator.xml</ConfigPath>
    <!--<InputPath>$(OutDir)</InputPath>-->
    <InputPath>\\Dev-6\TempBuild\Output\</InputPath>
  </PropertyGroup>

  <ItemGroup>
    <InputAssembly Include="$(InputPath)\*.dll;$(InputPath)\*.exe" Exclude="$(InputPath)\*.vshost.exe"/>
  </ItemGroup>

  <Target Name="AfterCompile">

    <!--Perform obfuscation steps after assemblies are compiled.-->

    <Dotfuscate InputAssemblies="@(InputAssembly)" Properties="$(DotfuscatorProperties)" ConfigPath="$(ConfigPath)">
      <Output TaskParameter="MappingFile" ItemName="DotfuscatorMappingFile"/>
      <Output TaskParameter="ReportFiles" ItemName="DotfuscatorReportFiles"/>
      <Output TaskParameter="OutputAssemblies" ItemName="DotfuscatedAssemblies"/>
      <Output TaskParameter="SatelliteAssemblies" ItemName="DotfuscatedSatelliteAssemblies"/>
      <Output TaskParameter="DebugSymbols" ItemName="DotfuscatedDebugSymbols"/>
    </Dotfuscate>
  </Target>
  <!-- End of dotfuscation Stuf....-->

Я использую следующую задачу dotfuscator:

<Import Project="$(MSBuildExtensionsPath)\PreEmptive\Dotfuscator\4.0\PreEmptive.Dotfuscator.Targets" />

На сборочной машине установлен dotfuscator professional.Он полностью функционален и отлично работает при использовании вручную.

Пожалуйста, помогите в этой проблеме.

С уважением

1 Ответ

2 голосов
/ 25 июня 2010

Обычно это вызвано тем, что служба сборки запускается под другой учетной записью.Dotfuscator требует принятия лицензионного соглашения во время его первоначального выполнения для каждой учетной записи пользователя, под которой он работает.

Вы можете войти на сервер сборки, используя учетную запись, которую использует ваша сборка, запустить Dotfuscator и принять лицензионное соглашение.После того, как вы это сделаете, будущие выполнения под этой учетной записью будут работать нормально.

Если вы не можете войти на сервер сборки с учетными данными службы сборки, служба технической поддержки PreEmptive может предоставить вам альтернативный метод для обхода.этот.Вы можете связаться со службой поддержки по адресу support@preemptive.com или подать заявку в службу поддержки напрямую по адресу http://preemptive.com/support.

...