一旦我将Fody.Costura添加到我的项目中,将生成的程序集复制到其他位置的发布后事件便开始失败,并显示访问被拒绝的消息。这是有道理的,因为Costura使用MSBuild来嵌入程序集。有没有办法强制Costura完成后执行我的帖子构建?生成后命令的示例:
0
答案 0 :(得分:0)
基本上,我自己的问题的解决方案如下。
<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>
我所做的是用MSBuild Target
和Task
替换了运行命令行例程的标准的Post Build Command。在构建完成且Fody完成后,将其标记为运行合并程序集解决了我的问题。
还有一个有用的事实是,Tasks
具有类似于ContinueOnError="true"
的标志,该标志允许任务继续尝试直到文件可用(如果是问题所在),而不是命令行实用程序只是失败。
干杯!