0

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

copy /Y "$(TargetPath)" "%ALLUSERSPROFILE%\Autodesk\Revit\Addins\2019\HOK-Addin.bundle\Contents"
4

1 回答 1

1

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

  <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>

我所做的是将运行命令行例程的标准构建后命令替换为 MSBuildTargetTask.Giving 标志以在构建完成并且 Fody 完成合并程序集后运行,从而解决了我的问题。

同样有帮助的是,Tasks具有这样的标志ContinueOnError="true"允许任务继续尝试直到文件可用(如果这是问题的话),而不是会失败的命令行实用程序。

干杯!

于 2018-10-09T19:08:04.693 回答