我已经构建了一个nuget包,并将其发布到nuget.server站点。但是,当我尝试使用服务器上的软件包时,build文件夹中的.targets文件不在文件中。但是,如果我从本地文件夹中使用该程序包,它将正常工作。我如何使它工作?
如果我查看服务器上文件夹中的软件包,就可以了。
答案 0 :(得分:0)
我不清楚您是要使用(引用和还原)软件包,还是构建(打包)软件包。
如果问题在于打包nupkg,则NuGet要求props和target文件具有specific filenames in specific folders,但是如果使它至少工作一次,则可能已经知道了。如果这不是打包的问题,则需要向我们提供更多信息,因为不正确使用文件名约定是最常见的问题,我无法猜出问题可能是什么。特别是,如果与在服务器上打包相比,在本地计算机上打包的打包方式有所不同,则意味着在两台计算机上打包的方式有所不同,因此我们需要有关如何构建和打包的更多信息处理您的项目。
如果问题是使用(恢复)包装,则有几种可能。我最好的猜测是,您曾经有一个软件包,而目标文件无法正常工作,然后您在服务器上还原了该软件包。根据设计,NuGet包是不可变的,这意味着更改包的内容(相同ID和版本)是无效的。这使NuGet可以一次从远程Feed中下载软件包,将其保存在全局软件包文件夹中(而不是缓存;它们永不过期),而下一次NuGet需要还原相同的软件包(id +版本)时,它将使用其中一个全局软件包文件夹,不会再次下载。这意味着,如果您曾经构建了错误的nupkg并将其还原到计算机上,然后修复了nupkg并保留了相同的版本号,则该计算机将永远无法获得固定的nupkg。您需要将其从全局包文件夹中删除。我不确定100%,但是我认为如果您有本地文件供稿,并且还原了使用packages.config
的项目,则nupkg不会保存在全局包文件夹中,因此没有相同的名称问题。简而言之,我认为问题在于您只更改了nupkg内容而不更改版本号,并且其中一台计算机在其始终使用的全局包文件夹中拥有旧副本。
如果这不是问题,那么下一个最可能的原因是服务器供稿上的nupkg与本地供稿中的nupkg具有不同的内容。我从未使用过NuGet.Server
,但是某些nuget储存库(如nuget.org)不允许覆盖nupkgs。因此,如果您将nupkg推送到服务器,则在不更改版本的情况下解决了nupkg的问题,然后尝试再次推送,则第二次推送可能会失败。
总而言之,您的问题没有为我们提供足够的信息来帮助您,但我在上面写了有关最常见问题的信息。如果没有帮助,则需要向我们提供更多信息。 example of the problem是向我们提供足够信息以帮助您的最佳方法。