2

我为我的另一个包(命名为 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。

4

1 回答 1

1

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

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

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

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

于 2013-07-17T09:29:14.317 回答