我通过TFS Build a.k.a Team Build调用dotfuscator任务,取自-=Dotfuscator Task with 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专业版。它功能齐全,手动使用时效果很好。
请帮助解决这个问题。
此致
答案 0 :(得分:2)
这通常是由在不同帐户下运行的构建服务引起的。 Dotfuscator要求在其运行的每个用户帐户的初始执行期间接受EULA。
您可以使用构建所使用的帐户登录构建服务器,运行Dotfuscator并接受EULA。一旦你完成了该账户下的未来执行将会正常运作。
如果您无法使用构建服务凭据登录构建服务器,则PreEmptive技术支持可以为您提供另一种方法来解决此问题。您可以通过support@preemptive.com与支持小组联系,或直接在http://preemptive.com/support提交支持请求。