В основном решение моего собственного вопроса заключается в следующем.
<Target Name="CopyFiles" AfterTargets="AfterBuild;NonWinFodyTarget">
<Message Text="Signing file..." Importance="high" />
<Exec Command=""C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64\signtool.exe" sign /c "Code Signing - DTM" /v "$(TargetPath)"" />
<Message Text="Copy files..." Importance="high" />
<Message Text="$(TargetPath) > $(ALLUSERSPROFILE)\Autodesk\Revit\Addins\$(Configuration)\HOK-Addin.bundle\Contents" Importance="high" />
<Message Text="$(TargetDir)$(TargetName).addin > $(ALLUSERSPROFILE)\Autodesk\Revit\Addins\$(Configuration)" Importance="high" />
<Copy SourceFiles="$(TargetPath)" DestinationFolder="$(ALLUSERSPROFILE)\Autodesk\Revit\Addins\$(Configuration)\HOK-Addin.bundle\Contents" ContinueOnError="true" />
<Copy SourceFiles="$(TargetDir)$(TargetName).addin" DestinationFolder="$(ALLUSERSPROFILE)\Autodesk\Revit\Addins\$(Configuration)" ContinueOnError="true" />
</Target>
Что я сделал, так это заменил стандартную команду Post Build, которая запускает процедуры командной строки, на MSBuild Target
и Task
. Предоставив ей флаги для запуска после завершения сборки и Fodyсделано слияние сборок решает мою проблему.
Также помогает тот факт, что у Tasks
есть флаги, такие как ContinueOnError="true"
, которые позволяют задаче продолжать попытки до тех пор, пока файл не станет доступен (если это было проблемой), в отличие от утилит командной строки, которые простопотерпеть поражение.
Ура!