VS2019.csproj删除或修改链接的内容文件



我有一个外部项目;普通的";javascript等内容文件,以便在多个web项目之间共享。在csproj文件中使用新的LinkBase属性,并结合以下技巧:http://mattperdeck.com/post/Copying-linked-content-files-at-each-build-using-MSBuild.aspx我现在已经将链接项目的确切层次结构复制到主项目中,当我运行我的网站时,内容文件会正常工作并被找到,捆绑甚至会正确进行,这太棒了!

问题是,在关闭应用程序后,复制的内容文件仍然保留在后面,由于这是一个团队项目,它可能会让其他开发人员感到困惑,哪些文件是";主";副本和哪些是被复制的,没有视觉指示器。

有没有办法让我做下面两件事中的一件?

A: 在复制任务期间,在所有文件前加上一些注释文本,指示类似";这是从链接项目复制的,不要编辑此文件,所有更改都将丢失,请在此处编辑文件->quot;

或者:

B: 有没有一种方法可以在项目关闭后删除文件?我没有看到任何在项目完成后发生的构建事件,所以我猜测这个选项可能是不可能的。

以下是我目前拥有的,非常简单:

<ItemGroup>
<Content Include="..MyFileLinks***.js" LinkBase="" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<Target Name="CopyLinkedContentFiles" BeforeTargets="Build">
<Copy SourceFiles="%(Content.Identity)"
DestinationFiles="%(Content.Link)"
SkipUnchangedFiles='true'
OverwriteReadOnlyFiles='true'
Condition="'%(Content.Link)' != ''" />
</Target>

最好的方法是添加一个依赖于Clean进程的删除目标。实际上,没有依赖close vs的目标,因为任何目标都依赖于构建过程,而不是关闭VS或打开VS。

所以我的建议是添加一个依赖干净进程的目标来删除这些文件。

添加此目标:

<Target Name="RemoveFiles" AfterTargets="Clean">
<Message Importance="high" Text="%(Content.Link)"></Message>
<Delete Files="%(Content.Link)"></Delete>
</Target>

您想关闭VS之前,请单击Clean,届时文件将被删除。

最新更新