NuGet pack未打包输出目录中的所有文件。我错过了什么?
我正在尝试从.csproj创建一个NuGet包。我已经成功编译了项目,输出文件夹包含所有必要的文件(我的程序集及其所有依赖项)。然而,NuGet似乎只是将由.csproj创建的程序集放入包中,而不是它的任何依赖项中。我的命令行如下所示:NuGet pack未打包输出目录中的所有文件。我错过了什么?,nuget,nuget-package,Nuget,Nuget Package,我正在尝试从.csproj创建一个NuGet包。我已经成功编译了项目,输出文件夹包含所有必要的文件(我的程序集及其所有依赖项)。然而,NuGet似乎只是将由.csproj创建的程序集放入包中,而不是它的任何依赖项中。我的命令行如下所示: nuget pack MyProject.csproj -Property Configuration=Release 生成的.nupkg文件在lib文件夹中只有我的程序集。我已经成功地让NuGet为其他项目工作,但碰巧这个项目引用了企业库日志块,但它没有通过
nuget pack MyProject.csproj -Property Configuration=Release
生成的.nupkg文件在lib文件夹中只有我的程序集。我已经成功地让NuGet为其他项目工作,但碰巧这个项目引用了企业库日志块,但它没有通过NuGet检索到。我不确定这是否与我的问题有关
你有没有想过为什么它不能获取依赖项?如果你需要让你的nuspec文件自动更新,它实际上只是一个XML文件(我相信你知道),所以你可以从MSBuild中使用一些非常好的工具来自动创建/更新nuspec。现成的MSBuild提供了一些可以更新或转换XML的任务,我使用了MSBuild社区任务来定制初始nuspec。例如,默认的nuspec包含一些我不需要的带有字符的行,因此我使用XmlUpdate任务来删除它们 虽然我还没有研究过扫描csproj文件中的非nuget引用,但我认为只要做一点研究就可以了。以下是一些博客文章的链接,介绍了我在NuGet automation方面的体验,它们可能会帮助您抢占先机: -本文包括一些基本的NuSpec更新,因为所描述的包与NuGet已经知道如何自动化的包类型没有太大区别 -本文包括一些更复杂的更新,以支持将MEF部件作为仅运行时引用分发 如果您计划经常这样做,不想弄乱MSBuild,或者只是想从
ProjectFactory.cs
的1360之前版本中恢复您喜欢的行为,NuGet支持通过MEF进行第三方扩展。您可以进入源代码管理,获取您喜欢的早期代码,并创建一个提供该行为的自定义命令(例如custompack
)。然后您可以从命令行使用它,如下所示:
nuget custompack MyProject.csproj-属性配置=Release
我认为这是NuGet非常酷的一面,但我自己还没有玩过。下面有一篇文章解释了如何做到这一点:
因此,尽管David提到NuGet并不是为支持此场景而设计的,但如果该场景适合您,那么您可以通过此途径扩展NuGet以满足您的需要。我了解了更多有关此场景的信息。显然,在版本1360中,ProjectFactory.cs从获取输出目录中的所有文件更改为仅从输出目录获取项目输出。事实证明,我的其他软件包只是出于纯粹的愚蠢运气。在这些情况下,我的依赖项的名称恰好以与项目输出名称相同的字符串开头。我可以通过使用将缺少的依赖项添加到.nuspec中来修复我的问题,但这意味着如果项目的依赖项发生更改,那么我需要记住手动更新.nuspec。一定有更好的办法。我错过了什么?当依赖项不是来自NuGet时,其他人如何确保给定的包具有所有必需的依赖项?根据设计,获取输出目录中的所有内容是不正确的,因此我们选择了较小的错误。有些项目将所有输出二进制文件放在同一个文件夹中(有些项目我们特别维护)。感谢您在扩展NuGet命令行时给出的提示。我不知道这是一个选择