visual-studio - VS2019 .csproj 删除或修改链接内容文件
问题描述
我有一个外部项目,其中包含要在多个 Web 项目之间共享的大量“通用”javascript/etc 内容文件。使用我的 csproj 文件中的新LinkBase
属性,以及此处的技巧组合:http://mattperdeck.com/post/Copying-linked-content-files-at-each-build-using-MSBuild.aspx我现在有了链接项目的确切层次结构复制到主项目,当我运行我的网站时,发现内容文件功能,并且捆绑甚至发生正确,这太棒了!
问题是,在关闭应用程序后,复制的内容文件仍然存在,并且由于它是一个团队项目,它可能会让其他开发人员感到困惑,哪些文件是“主”副本,哪些是复制的,没有视觉指示符.
有没有办法我可以做以下两个之一?
A:在复制任务期间,在所有文件前面加上一些注释文本,表示“这是从链接项目复制的,不要编辑此文件,所有更改都将丢失,请在此处编辑文件 ->”
或者:
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
,此时文件将被删除。
推荐阅读
- java - 以“自然顺序”从数组中返回数据
- java - 如何使用 Retrofit 查询某些 JSON 项目?
- angularjs - 相当于 Angular 2 中的以下代码
- python - Python/NLTK 停用词和文件写入问题
- c# - 敌人移动不顺畅
- javascript - 检查标记是否在多边形内
- vue.js - Vue | 在插件中定义反应属性
- android - Picasso 库不加载图片,android oreo 8.0
- angular - 在 Angular Material Stepper 中将步骤编号更改为 mat-icon
- php - Laravel 验证电子邮件地址问题