加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:30:02 所属栏目:百科 来源:网络整理
导读:我想在我的CI构建管道中使用nuget.exe(版本2.5)来安装一个与另一个包相关联的包。 我有以下nuspec文件。 ?xml version="1.0"?package metadata idA/id dependencies dependency id="B" version="1.0.0.1" / /dependencies /metadata files file src="A.dll"
我想在我的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.config文件是:

<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的依赖。
我们不把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):

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读