使用安装了Fody.Costura的构建后事件

时间:2018-10-02 16:55:27

标签: visual-studio post-build-event fody-costura

一旦我将Fody.Costura添加到我的项目中,将生成的程序集复制到其他位置的发布后事件便开始失败,并显示访问被拒绝的消息。这是有道理的,因为Costura使用MSBuild来嵌入程序集。有没有办法强制Costura完成后执行我的帖子构建?生成后命令的示例:

0

1 个答案:

答案 0 :(得分:0)

基本上,我自己的问题的解决方案如下。

  <Target Name="CopyFiles" AfterTargets="AfterBuild;NonWinFodyTarget">
    <Message Text="Signing file..." Importance="high" />
    <Exec Command="&quot;C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64\signtool.exe&quot; sign /c &quot;Code Signing - DTM&quot; /v &quot;$(TargetPath)&quot;" />
    <Message Text="Copy files..." Importance="high" />
    <Message Text="$(TargetPath) &gt; $(ALLUSERSPROFILE)\Autodesk\Revit\Addins\$(Configuration)\HOK-Addin.bundle\Contents" Importance="high" />
    <Message Text="$(TargetDir)$(TargetName).addin &gt; $(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 TargetTask替换了运行命令行例程的标准的Post Build Command。在构建完成且Fody完成后,将其标记为运行合并程序集解决了我的问题。

还有一个有用的事实是,Tasks具有类似于ContinueOnError="true"的标志,该标志允许任务继续尝试直到文件可用(如果是问题所在),而不是命令行实用程序只是失败。

干杯!