一旦我将Fody.Costura添加到我的项目中,将结果程序集复制到不同位置的生成后事件开始失败,并显示拒绝访问的消息。这是有意义的,因为Costura使用MSBuild来嵌入程序集。有没有办法在Costura完成后强制执行我的post构建?构建后命令示例:
copy /Y "$(TargetPath)" "%ALLUSERSPROFILE%\Autodesk\Revit\Addins\2019\HOK-Addin.bundle\Contents"发布于 2018-10-10 03:08:05
基本上,我自己问题的解决方案如下所示。
<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.Giving替换运行命令行例程的标准构建后命令,它标记为在构建完成并且Fody完成合并程序集解决了我的问题之后运行。
同样有帮助的是,Tasks有像ContinueOnError="true"这样的标志,它允许任务继续尝试,直到文件可用(如果这就是问题所在),而不是命令行实用程序就会失败。
干杯!
https://stackoverflow.com/questions/52612973
复制相似问题