【问题标题】:use post build events with Fody.Costura installed使用安装了 Fody.Costura 的构建后事件
【发布时间】:2018-10-02 16:55:26
【问题描述】:

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

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

【问题讨论】:

  • 不太可能是导致此问题的 Fody。暂时禁用已安装的反恶意软件产品,然后重试。记录你使用的东西。
  • 实际上,我可以通过自定义Target 并使用Copy 例程来解决此问题。我只是确保将我的AfterTargets 设置为AfterBuild;NonWinFodyTarget,然后就成功了。在此之前,我只使用了 Fody 完成工作之前必须执行的标准构建后事件,并且文件仍然被锁定。
  • 复制构建任务要聪明得多,它会在“拒绝访问”失败时反复重试复制。您不是第一个遇到反恶意软件问题的程序员。请务必记录您使用的内容,在我们了解什么是好的和应该避免的之前,这类问题不会停止。
  • 我很好奇你为什么认为它是由反恶意软件引起的。在我添加 Fody 之前,后期构建命令运行良好。问题在于对文件的锁定/拒绝访问,可能是因为 Fody 在命令触发时正在使用它。我同意任务要好得多,但我怀疑是否涉及反恶意软件。愿意解释一下您对此的看法吗?

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


【解决方案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>

我所做的是用 MSBuild TargetTask 替换运行命令行例程的标准构建后命令。在构建完成和 Fody 完成合并程序集后为其设置标志以解决我的问题问题。

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

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多