将 Fody.Costura 添加到我的项目后,将生成的程序集复制到不同位置的构建后事件开始失败,并显示拒绝访问消息。这是有道理的,因为 Costura 使用 MSBuild 嵌入程序集。有没有办法在 Costura 完成后强制我的帖子构建执行?构建后命令的示例:
copy /Y "$(TargetPath)" "%ALLUSERSPROFILE%\Autodesk\Revit\Addins\2019\HOK-Addin.bundle\Contents"
将 Fody.Costura 添加到我的项目后,将生成的程序集复制到不同位置的构建后事件开始失败,并显示拒绝访问消息。这是有道理的,因为 Costura 使用 MSBuild 嵌入程序集。有没有办法在 Costura 完成后强制我的帖子构建执行?构建后命令的示例:
copy /Y "$(TargetPath)" "%ALLUSERSPROFILE%\Autodesk\Revit\Addins\2019\HOK-Addin.bundle\Contents"
基本上我自己的问题的解决方案如下。
<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>
我所做的是将运行命令行例程的标准构建后命令替换为 MSBuildTarget
和Task
.Giving 标志以在构建完成并且 Fody 完成合并程序集后运行,从而解决了我的问题。
同样有帮助的是,Tasks
具有这样的标志ContinueOnError="true"
允许任务继续尝试直到文件可用(如果这是问题的话),而不是会失败的命令行实用程序。
干杯!