Visual studio 在安装了Fody.Costura的情况下使用生成后事件
一旦我将Fody.Costura添加到我的项目中,我将生成的程序集复制到另一个位置的后期生成事件开始失败,并显示“拒绝访问”消息。这是有道理的,因为Costura使用MSBuild嵌入程序集。有没有办法在Costura完成后强制执行我的后期构建?生成后命令的示例:Visual studio 在安装了Fody.Costura的情况下使用生成后事件,visual-studio,post-build-event,fody-costura,Visual Studio,Post Build Event,Fody Costura,一旦我将Fody.Costura添加到我的项目中,我将生成的程序集复制到另一个位置的后期生成事件开始失败,并显示“拒绝访问”消息。这是有道理的,因为Costura使用MSBuild嵌入程序集。有没有办法在Costura完成后强制执行我的后期构建?生成后命令的示例: copy /Y "$(TargetPath)" "%ALLUSERSPROFILE%\Autodesk\Revit\Addins\2019\HOK-Addin.bundle\Contents" 基本上,我自己问题的解决方案如下
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>
我所做的是将运行命令行例程的standatd-Post-Build命令替换为MSBuildTarget
和Task
。在生成完成和Fody完成后为其指定运行标志合并程序集解决了我的问题
另一个有用的事实是,Tasks
具有类似于ContinueOnError=“true”
的标志,允许任务继续尝试,直到文件可用为止(如果这是问题所在),而不是命令行实用程序可能会失败
干杯 不太可能是福迪造成了这个问题。暂时禁用已安装的反恶意软件产品,然后重试。请记录您使用的内容。实际上,我可以通过自定义
Target
并使用Copy
例程来解决此问题。我只是确保将我的postertargets
设置为AfterBuild;非WinFodyTarget
,这就成功了。在此之前,我只使用标准的生成后事件,该事件必须在Fody完成其工作之前执行,并且文件仍然被锁定。复制生成任务要聪明得多,它将在“拒绝访问”失败时重复重试复制。您不是第一个遇到反恶意软件问题的程序员。请记录你使用的东西,在我们了解什么是好的,什么是坏的之前,这些问题不会停止出现。我很好奇为什么你认为这是由反恶意软件引起的。在我添加Fody之前,后期构建命令运行良好。问题在于对该文件的访问被锁定/拒绝,可能是因为当命令触发时Fody正在使用它。我同意任务要好得多,但我怀疑是否涉及反恶意软件。能解释一下你的想法吗?