NuGet包更新删除未更改的文件

时间:2013-07-03 06:03:07

标签: nuget nuget-package

我创建了一个nuget包(让我们将其命名为Web.Content),其中包含许多js,css和其他内容(名为Web)。在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。

1 个答案:

答案 0 :(得分:1)

据我所知,NuGet使用somуVS API在软件包安装过程中复制文件。此API使SVN认为文件已删除并添加了新文件(可能是因为安装了VisualSVN或AnkhSVN)。 所以我们决定采取下一步措施:

  1. 将我们的内容项目放在我们自己的名称不同的文件夹中 “内容”(让我们将其命名为“fs_content”)因为存在这样的 包中的文件夹触发NuGet通常的安装行为,但是 我们不需要NuGet以通常的方式安装我们的内容。
  2. 编写自己的install.ps1脚本,将我们的内容文件复制到 目的地并将其放入工具包文件夹。
  3. 但是在安装此类软件包之后,我们的内容项目似乎没有出现在应该出现的位置。我的同事在NuGet帮助中搜索了一些信息 - “软件包必须在内容或lib文件夹中包含Install.ps1才能运行的文件。只是在tools文件夹中有一些东西不会启动它。”我们将一个虚拟文件放入“Content”文件夹,Install.ps1脚本开始根据需要从“fs_content”文件夹中复制我们的内容。

    现在,SVN仅确定某些文件中所做的更改。