使用nuget.exe命令行来安装依赖关系
我想在我的CI构建管道中使用nuget.exe(版本2.5)来安装一个与另一个包相关联的包。
我有以下nuspec文件。 <?xml version="1.0"?> <package> <metadata> <id>A</id> <dependencies> <dependency id="B" version="1.0.0.1" /> </dependencies> </metadata> <files> <file src="A.dll" target="lib" /> </files> </package> 和类似的B. <packages> <package id="A" version="1.0.0.1" allowedVersions="[1,2)"/> </packages> 我运行以下命令: NuGet.exe install packages.config -ExcludeVersion -Outputdir libs -source http://get.nuget.mydomain 我得到输出: Successfully installed 'A 1.0.0.1'. 但是不要安装我的依赖B. 但是如果将B分开放在packages.config文件中,那么我得到安装的A和B。我希望在安装A时安装A,因为它是A的依赖。 当我安装A时,如何使用nuget.exe和安装依赖项B(仅将A放在packages.config中)。 谢谢
这不可能。 package.config文件的行为是设计的。只有在package.config中指定的东西才被安装,而不是它们的依赖关系。所有依赖关系也必须明确指定。
如果你看源代码,你会看到nuget.exe安装packages.config(http://nuget.codeplex.com/SourceControl/latest#src/CommandLine/Commands/InstallCommand.cs)使用PackageExtractor.InstallPackage(http://nuget.codeplex.com/SourceControl/latest#src/CommandLine/Common/PackageExtractor.cs): public static void InstallPackage(IPackageManager packageManager,IPackage package) { var uniqueToken = GenerateUniqueToken(packageManager,package.Id,package.Version); // Prerelease flag does not matter since we already have the package to install and we ignore dependencies. ExecuteLocked(uniqueToken,() => packageManager.InstallPackage(package,ignoreDependencies: true,allowPrereleaseVersions: true)); } 注意ignoreDependencies的硬调用:true (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |