更新现有Nuget包中的文件

时间:2011-06-09 15:56:03

标签: asp.net visual-studio nuget nuget-package

我有一个多项目ASP.NET Web Forms应用程序解决方案。我需要将一个母版页(3个文件),一些用户控件和一些图像,脚本和CSS文件共享给解决方案中的其他项目。

我已根据文档使用NuGet Package Explorer创建了一个包:

http://docs.nuget.org/docs/creating-packages/using-a-gui-to-build-packages

我目前的问题是:我已经更新了根项目中的共享文件,现在我想更新包,然后将其拉入其他项目(当前包在我的开发机器上的本地文件夹中)。 我该怎么做?

如果有人有一些快速入门的NuGet链接,请分享,因为官方文档并不是为我做的。

4 个答案:

答案 0 :(得分:1)

使用新版本再次创建包,如果原始版本为1.0,则生成此1.1并且NuGet将获取更新。

答案 1 :(得分:0)

您是否在询问如何更新已使用该软件包的项目?

这种情况下的关键是简单的版本控制。新版本的文件将被淘汰。使用新版本号再次捆绑软件包,然后从VS中的软件包管理器控制台运行Update-Package。

您可能还需要考虑一些谨慎的软件包,而不是一个直接的软件包。如果你想更新一些图像或一个CSS文件,而不是MasterPage,那么最好还是有一些较小的那些。

使用PM Explorer(来自你提到的帖子)从NuGet主存储库打开几个包,特别是jQuery 1.5.1和1.6.x,看看,因为这些将做非常类似的事情。不需要真正的魔力!

干杯。

答案 2 :(得分:0)

我之前已经做过了。您只需在.nuspec文件的元数据内增加包的版本。

在我的情况下,我的包名称是' [name]。[version] .nupkg '所以我将我的新包保存为' [name]。[version + 1 ]。nupkg '。

“管理nuget包”更新部分中的更新显示。

答案 3 :(得分:0)

NuGet文件最终只是一个zip文件。您可以使用任何可以更新zip文件的内容来更新条目。例如

using System.IO.Compression;
using System.IO.Compression.FileSystem;

// EG: AddOrUpdateZipEntry("mypackage.nupkg", "my.dll", "bin/my.dll")
void AddOrUpdateZipEntry(string zipFilePath, string contentsFilePath, string entryPathInZip)
{
    using (var zip = ZipFile.Open(zipFilePath, ZipArchiveMode.Update))
    {
        zip.GetEntry(entryPathInZip)?.Delete(); // Remove any existing entry first.
        zip.CreateEntryFromFile(contentsFilePath, entryPathInZip);
    }
}