【问题标题】:Nuget package files not copied when doing a "Restore Nuget Package" in Visual Studio在 Visual Studio 中执行“还原 Nuget 包”时未复制 Nuget 包文件
【发布时间】:2023-03-05 20:18:01
【问题描述】:

我有一个包含一些静态文件的 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包”选项),文件不会再次复制。

原因是包已经安装了

知道如何在恢复时强制复制文件吗?

【问题讨论】:

  • 为什么不直接卸载并重新安装 nugget 包?

标签: c# visual-studio-2017 nuget


【解决方案1】:

【讨论】:

  • 您好朋友,感谢您的分享,请将您的回复标记为答案,这将有助于其他社区成员更轻松地搜索此有用信息,这只是一个提醒:)
【解决方案2】:

知道如何在恢复时强制复制文件吗?

正如您在回答中描述的那样,恢复选项不支持恢复。

但是,如果您想在设计时或构建时强制恢复丢失的文件。你可以考虑在nuget包中including msbuild props and targets

创建一个 PackageID.targets 文件(执行恢复或复制工作)并将其放在build 文件夹中。然后使用该包的任何项目都将导入该xx.targets 文件。而且由于xx.targets 文件可能涉及许多内置任务,例如copy task,因此移动任务...

您可能会在构建过程中通过类似的方式恢复文件:

<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>

另外,我曾经在one issue 中遇到过一个AppDynamics.Agent.Windows,即使在设计时也可以恢复丢失的文件,你可以从这个包中得到一些提示。(下载它的 xxnupkg 并将其重命名为 xx.zip=>解压)

所以restore选项不能恢复文件,如果你强烈需要,考虑使用自定义xx.targets文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2020-01-08
    • 2015-03-09
    • 2023-03-31
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    相关资源
    最近更新 更多