使用nuget.exe命令行来安装依赖关系

前端之家收集整理的这篇文章主要介绍了使用nuget.exe命令行来安装依赖关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在我的CI构建管道中使用nuget.exe(版本2.5)来安装一个与另一个包相关联的包。

我有以下nuspec文件

@H_404_3@<?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.config文件是:

@H_404_3@<packages> <package id="A" version="1.0.0.1" allowedVersions="[1,2)"/> </packages>

我运行以下命令:

@H_404_3@NuGet.exe install packages.config -ExcludeVersion -Outputdir libs -source http://get.nuget.mydomain

我得到输出

@H_404_3@Successfully installed 'A 1.0.0.1'.

但是不要安装我的依赖B.

但是如果将B分开放在packages.config文件中,那么我得到安装的A和B。我希望在安装A时安装A,因为它是A的依赖。
我们不把dll放在GAC中(所以我认为依赖解决不应该是一个问题)。而且我已经打开了A.nupkg并检查是否有依赖列表。
另外当我在visual studio编辑器中安装A时,B也被安装了(这是应该发生的)。

当我安装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):

@H_404_3@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

原文链接:https://www.f2er.com/javaschema/282121.html

猜你在找的设计模式相关文章