【问题标题】:NuGet package update removes unchanged filesNuGet 包更新删除未更改的文件
【发布时间】:2013-07-03 06:03:06
【问题描述】:

我为我的另一个包(命名为 Web)创建了一个包含大量 js、css 和其他内容的 nuget 包(我们将其命名为 Web.Content)。在 nuspec 文件中,我有文件部分

<file src="Content\**\*.*" target="content\Content" />

我对 Content 文件夹中的一些文件进行了更改,然后创建了一个新版本的 Web.Content 包。

我有一个包含 Web 和 Web.Content 包的项目。创建新版本的 Web.Content 包后,我通过 nuget 在我的项目中对其进行了更新。当我尝试提交项目的更改时,SVN 建议我提交 Web.Comment 包的所有内容。 据我了解,当更新 nuget 包时,所有目标文件夹“content\Content”都被删除并再次从包中复制。 但我需要 SVN 仅跟踪在几个文件中所做的更改,我不想看到数千个更改的文件,因为实际上只在其中一些文件中进行了更改。

如何使 nuget 仅复制已更改的文件?我应该更改我的 nuspec 文件还是应该为我的包创建一些 PS 脚本来覆盖 delete'n'copy nuget 包更新行为?

如果有一些示例或链接会很棒。

已尝试使用 NuGet 2.6.40627.9000 和 Tortoise SVN 1.7.7。

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    据我了解,NuGet 在安装包期间使用 somу VS API 复制文件。此 API 使 SVN 认为文件已删除并添加了新文件(可能是因为安装了 VisualSVN 或 AnkhSVN 造成的)。 所以我们决定做接下来的步骤:

    1. 将我们的内容项放在我们自己的文件夹中,该文件夹的名称不同于 “内容”(让我们将其命名为“fs_content”),因为这样的存在 包中的文件夹会触发 NuGet 通常的安装行为,但是 我们不需要 NuGet 以通常的方式安装我们的内容。
    2. 编写自己的 install.ps1 脚本,将我们的内容文件复制到 目标并将其放入工具包文件夹中。

    但是在安装了这样的包之后,我们的内容项并没有出现在它们应该出现的位置。我的同事在 NuGet 帮助中搜索了一些信息 - “软件包必须在内容或 lib 文件夹中有文件才能运行 Install.ps1。只是在工具文件夹中有一些东西不会启动。”我们将一个虚拟文件放入“Content”文件夹,Install.ps1 脚本开始根据需要从“fs_content”文件夹中复制我们的内容。

    现在 SVN 只正确判断某些文件中所做的更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2011-03-11
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多