c# - 在 Visual Studio 中执行“还原 Nuget 包”时未复制 Nuget 包文件
问题描述
我有一个包含一些静态文件的 nuget 包
<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
....
....
</metadata>
<files>
<file src="static\css\index.css" target="content\static\css\index.css"/>
<file src="static\js\index.js" target="content\static\js\index.js"/>
</files>
</package>
如果我将此包安装在 Visual Studio 项目中,则文件将正确复制到项目中。但是当我从项目中手动删除这些文件并尝试恢复包时(通过解决方案的“恢复 nuget 包”选项),文件不会再次复制。
原因是包已经安装
知道如何在还原时强制复制文件吗?
解决方案
知道如何在还原时强制复制文件吗?
正如您在回答中所描述的那样,恢复选项不支持恢复。
但是,如果您想在设计时或构建时强制恢复丢失的文件。您可以考虑在 nuget 包中包含 msbuild 道具和目标。
创建一个 PackageID.targets 文件(执行还原或复制作业)并将其放在build
文件夹中。然后使用该包的任何项目都将导入该xx.targets
文件。而且由于该xx.targets
文件可能涉及许多内置任务,例如复制任务,移动任务......
您可能会在构建期间通过类似于以下内容恢复文件:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="RestoreFiles" BeforeTargets="build" Condition="!Exists('static\css\index.css') Or !Exists('static\css\index.css')">
<Copy SourceFiles="xxx" DestinationFolder="xxx"/>
</Target>
</Project>
另外,我曾经在一个问题中遇到过AppDynamics.Agent.Windows ,即使在设计时也可以恢复丢失的文件,你可以从这个包中得到一些提示。(下载它的 xxnupkg 并将其重命名为 xx.zip=>解压缩它)
所以恢复选项不能恢复文件,如果你强烈希望,考虑使用自定义 xx.targets 文件。
推荐阅读
- python - 未找到 Scapy Dot11
- amp-html - AMP Validator 报告自定义 CSS 大于 50,000(如果不是)
- javascript - 获取对象的键和值
- c# - 鼠标点击时生成的块不会注册最大块数
- java - 用于查找 HTML 标签及其内容的正则表达式的否定 - java
- python - 在新项目中或之前添加评论
- php - 在 Wordpress 函数中将查询字符串添加到多个页面 url
- string - 如何在xceptor中将字符串转换为数字
- php - 在 Woocommerce 管理员订单列表上处理多个自定义批量操作
- c - 定义Linux中C程序允许的最大char []数组大小