我在 IIS 上本地运行私有 Nuget 服务器。我正在创建包并使用 nuget.exe 通过 commadline 将它们全部上传(稍后我必须将它放在构建服务器上,因此是命令行)。但是,我遇到了一个问题。
我正在尝试声明依赖项。我在 .csproj 文件所在的文件夹中生成 nuspec 文件。然后我手动编辑 nuspec 文件以将其添加到元数据标记下:
<metadata>
<dependencies>
<group targetFramework=".NETFramework4.5">
<dependency id="DemoProject" version="2.0.0.0" />
</group>
</dependencies>
</metadata>
Nuget 服务器上存在 DemoProject 版本 2.0.0.0。我正在为其创建包的项目 MyProj.csproj 没有对通过 Visual Studio 添加到其中的 DemoProject 的引用。只是在打包时我想创建依赖项。这听起来很奇怪,但需要进行一些初始验证。
然后我运行打包命令:
"C:\nuget\NuGet.exe" 包 MyProj.csproj -IncludeReferencedProjects -Prop Configuration=Release
然后我使用命令行将它推送到 NuGet 服务器。当我通过命令行进行安装时,安装位置只存在 MyProj 包。
当我使用 Nuget 包资源管理器并创建包时,我可以使用包依赖关系编辑器来指定依赖关系。它询问我本地 Nuget 服务器的 URL,然后添加依赖项。当我安装该软件包时,它可以工作!
在这两种情况下,生成的 nuspec 文件似乎没有区别。显然 Nuget 包管理器正在做一些我错过的事情。
有什么提示吗?
更多详细信息:当我在包管理器控制台中创建一个 lib 文件夹并手动放置我的 dll 时,lib->net45->MyProj.dll,然后当我安装这样创建的包时,也“不”安装依赖项。再次回到阅读文档。