使用nuget.exe命令行安装依赖项
我想在我的CI构建管道中使用nuget.exe(版本2.5)来安装一个依赖于另一个包的包 我有以下nuspec文件使用nuget.exe命令行安装依赖项,nuget,Nuget,我想在我的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>
<?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>
我得到输出:
Successfully installed 'A 1.0.0.1'.
但是不要安装我的依赖项B
但如果将B分别放在packages.config文件中,我会同时安装A和B。我希望在安装A时安装B,因为它是A的依赖项。
我们没有将DLL放在GAC中(所以我相信依赖项解析应该不会是一个问题)。
另外,当我在VisualStudio中安装from with时,编辑器B也会被安装。(这是应该发生的事情)
仅安装A(仅将A放入packages.config)时,如何使用nuget.exe和安装依赖项B
谢谢这是不可能的。packages.config文件的行为是由设计决定的。仅安装packages.config中指定的内容,而不安装它们的依赖项。所有依赖项也必须显式指定 如果查看源代码,您将看到nuget.exe install packages.config()使用PackageExtractor.InstallPackage():
请注意对
ignoreDependencies:true的硬调用
我在nuget.codeplex.com上创建了一个问题,这不是您的确切问题,但也将使用稍微不同的工作流来解决它:
NuGet.exe install packages.config -ExcludeVersion -Outputdir libs -source http://get.nuget.mydomain
Successfully installed 'A 1.0.0.1'.
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));
}