Nuget Pack不包括新文件

时间:2019-06-26 15:19:17

标签: c# nuget

我已经在项目中添加了新的模型和助手,但是当我运行nuget pack并将软件包安装到项目中时,我在Assembly Explorer中看不到新项目,也无法使用它们。我在构建过程中是否遗漏了一些不包含添加到软件包中的新文件的东西?

我正在使用Visual Studio 2017和nuget cli

2 个答案:

答案 0 :(得分:0)

猜测,更改代码并再次打包时,您没有更改软件包版本。 NuGet的设计目的是使程序包ID /版本生成不可变的程序包。这意味着从nuget.org下载Newtonsoft.Json 12.0.1这样的软件包只需一次,并且每次在同一计算机上的任何项目中使用该软件包时,您都可以重复使用相同的下载内容,而不必每次还原/构建项目时都要下载。

这会在某些人尝试测试其软件包时引起问题。一种选择是利用语义版本控制并使用1.0.1-preview.11.0.1-preview.2,因此项目的每个内部版本都有唯一的版本号。另外,或者相反,您可以使用nuget.config来将globalPackagesFolder设置到另一个位置,该位置在每次更换软件包时都会清除。如果删除“缓存”,则无法重复使用旧内容。但这仅在您控制使用该软件包的计算机时有效。将软件包发布给其他任何人都可以使用的软件包之后,如果您更改内容,就会引起问题,这就是nuget.org不允许删除软件包而只将其不列出的原因。

但是,另一种可能的解决方案是不使用包而仅使用项目引用。有些人会误认为,如果您有两个软件包,则一个依赖另一个软件包,他们需要使用软件包引用来确保NuGet依赖项信息流。那是不对的。如果打包了MSBuild打包目标(强烈建议使用,并且是SDK样式项目的默认选项),则NuGet始终会将项目引用转换为NuGet依赖项。当另一个项目也有自己的nuget pack文件时,nuspec会将项目引用转换为依赖项。使用项目引用测试项目时,您不必担心不可变的程序包。只要准备好就打包,但测试不需要。

答案 1 :(得分:-1)

也许您有一个.nuspec文件(与.csproj处于同一级别),需要进行编辑以包括新文件?