问题标签 [packagereference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3512 浏览

visual-studio - VS2017 nuget一直在错误位置搜索包

所以我从 nuget packages.config 迁移到 PackageReference,发现存在一些兼容性问题。我将项目恢复到其工作状态(在 PackageReference 之前),现在我的项目没有编译。

我收到以下错误:

严重性代码描述项目文件行抑制状态错误在 C:\Users\user.nuget\packages 中找不到版本 6.2.0 的包 EntityFramework。运行 NuGet 包还原以下载包。数据库管理器

这发生在多个包裹上。似乎 Nuget 出于某种原因正在 user.net\package 目录中搜索包。最初,项目中有一个包含所有包的文件夹。

我通过编辑 NuGet.Config 文件强制全局路径位于项目内的文件夹中。

我不知道为什么 Nuget 一直在那个位置寻找包。它应该查看项目中的包文件夹。

未找到 packages.config 中的所有这些包。当我尝试 PackageReference 时,这个问题开始发生。

有没有办法重置 Nuget 的设置?我将不胜感激解决此问题的任何指导。

0 投票
2 回答
3916 浏览

visual-studio-2017 - 切换回 packages.config - 澄清答案

根据规则,我必须提出一个新问题,以澄清另一个问题/答案。

这个答案就是这个:https ://stackoverflow.com/a/45964469/305916

然后呢?刚刚做了接受的答案,但是 packages.config 文件没有填充包(我知道它没有这么说)。

如果软件包自动出现在 packages.config 中,或者我需要再次安装它们,我会错过下一步该怎么做...

我倾向于后者,但我觉得答案不完整:)

但是该怎么办?

0 投票
1 回答
1278 浏览

reference - 创建包含其他 nuget 包的 nuget 包

我创建了一个.NET Standard项目,在其中安装4.4.4System.ServiceModel.Httpnuget 包的版本。这个包还包括 dll System.ServiceModel.Primitives...我添加图像:

在此处输入图像描述

我已经使用命令从我的项目中创建了一个 nuget 包

现在我必须在另一个解决方案中安装这个包,在.NET Framework项目中。但是由于某种原因,当我启动项目时,我收到了这个错误:

无法加载文件或程序集“System.ServiceModel.Primitives,Version=4.2.0.3,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。

4.2.0.3dll的版本System.ServiceModel.Primitives在包版本里面4.4.4

我以这种方式编辑了我的 .NET Standard 项目文件:

但是当我在我的 .NET 项目中安装包时,我仍然收到该错误。我的包裹中没有包含任何外部包裹……我错过了什么?

谢谢

编辑

我还期望,当我安装我的 nuget 包时,会出现一个窗口并告诉我“您还需要安装包 A 和包 B。继续与否?”。反而什么都没有出现......

0 投票
1 回答
551 浏览

c# - PackageReference 和 package.lock.json 是否消除了 App.Config 中对绑定重定向的需求

在 Nuget 中,我们现在可以对依赖项使用PackageReference格式,还可以使用锁定文件启用可重复构建

在我的项目中,我得到了一些类似的东西:

所以我们可以看到,例如我们有冲突的 Newtonsoft.Json 依赖项。在这种情况下,我相信 Apache.Avro 的依赖项声明版本必须> = 3.5.0,因此这应该是兼容的。

当 NuGet 执行其还原时,只有一个给定程序集的 DLL 会在应用程序启动时得到解析和使用。如果没有锁定文件,我必须在所有 csproj 文件中使用 AutoGenerateBindingRedirects=true。

这会生成熟悉的绑定重定向:oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0"

如果没有这样的重定向,您会得到同样熟悉的错误消息:

在启动时。因为依赖项需要一个非常旧的 Newtonsoft.Json 版本,我们只给它解析的版本 12.0.1。

我的印象是新的 PackageReference 和锁定文件将消除对程序集绑定重定向的需要。但我现在的印象是,仍然需要它们来避免所说的错误。

那是对的吗?绑定重定向的需要是否一定意味着依赖项的设置有问题?当库指定它们将接受版本等于或高于 XYZ 的 DLL 时,为什么需要绑定重定向?

0 投票
1 回答
64 浏览

.net-core - 自动挑选最新版本的私有程序集包参考 Nuget

我知道以前有人问过这个问题,但没有任何答案,或者 nuget 没有很好地听取我的 packagereference。

我有一个私人 nuget 仓库,有 2 个程序集:

我想要的是 nuget 在恢复时自动获取最新版本(通过 azure devops),根据官方文档,我应该执行以下操作:

但是当我查看它时,它会尝试恢复到 1.0.0 版本(甚至不可用)。

如何让nuget自动获取最新版本?

0 投票
1 回答
271 浏览

c# - 如何以编程方式找到 Nuget 恢复的 DLL?

用户执行 后dotnet add package <SomePackage>,DLL 将安装到类似于以下的路径:

如何以编程方式找到此路径?我看到其中有一些obj/project.assets.json我可以解析的信息,以及dotnet github 组织下的一个有趣的DependencyContextJsonReader类。

但是,我找不到有关此的文档或讨论,我不确定这是否是因为我采用了错误的方法。

一些背景知识:我正在编写一个可以构建 C# 项目的工具。它使用dotnet命令行工具和 Roslyn Workspace API 的组合与生成的项目进行交互。我现在想允许用户将 Nuget 包安装到这个生成的解决方案中。我调用dotnet add package SomePackage哪个工作正常,现在我想使用API将 DLL 添加到 RoslynProject对象,这需要实际的 DLL。AddReferences

0 投票
3 回答
9576 浏览

c# - NuGet 包引用复制 dll 本地

我有一些要求将 NuGet dll 的 Copy Local 设置为 false。在此之前,我使用了package.config格式,一切正常。迁移到包参考格式后,我找不到如何做到这一点。有人可以帮助我吗?

0 投票
0 回答
358 浏览

xamarin.forms - 迁移到 PackageReference 缺少 Nuget 构建失败

我有一个 Xamarin Forms 项目 - Android 项目以 API 28 (Pie) 为目标,并使用 packages.config 作为 nuget 引用。所有的包都有一个 targetFramework="monoandroid90"。该项目编译并正确运行。

我想迁移到使用 PackageReference,所以我使用 Migrate packages.config to PackageReference 选项。

完成后,我尝试构建项目并收到有关缺少包的错误:

Xamarin.Android.Support.Annotations.28.0.0.1

查看包文件夹,我可以看到没有下载任何 Xamarin.Android.Support 包,我无法让它们下载 - 即使重新安装包。

我还注意到所有 nugets 的 csproj 文件都引用了 monoandroid81,即使 packages.config 使用了 monoandroid90

有人在迁移后遇到过类似的困难吗?

0 投票
1 回答
191 浏览

c# - 为什么 dotnet publish 不发布预期的版本?

处理 CVE-2018-8409,注意到我们的 dotnet publish(.NET Core 2.1.403 ASPNET Core 应用程序)正在我们的输出目录中发布 System.IO.Pipelines.dll v4.0.0.1。

我添加了对 System.IO.Pipelines v4.5.3 的 nuget 包引用。

我在构建输出中没有看到对 v4.0.0.1 的引用,除此之外:

然而,当我签入 VS2017 时,我清楚地看到 nuget 包显示 System.IO.Pipelines (4.5.3)

我期望 System.IO.Pipelines 4.5.3 会在输出中,包括任何必要的程序集绑定重定向。

有什么我想念的想法吗?

谢谢!

0 投票
0 回答
348 浏览

msbuild - 如何根据主要版本安装 NuGet 包

我们使用 myget.org 作为 NuGet 服务器,在这里我上传了一个名为 mypackage 的包,它有两个不同的主要版本,例如 6.0.1 和 7.0.1,每个主要版本可以有多个版本,但我总是希望拥有最新版本虽然正确指定的主要版本。因此,在我的代码的一个分支中,我希望拥有 6.0.X(X = 最新),而在另一个分支中,我希望拥有 7.0.X

目前我在我的 msbuild 中执行以下操作,其中 MyPackage id 的名称中有主要版本,但这是不可扩展的。

我更愿意从 msbuild 脚本中执行此操作。可能吗?

简化示例

构建.msbuild 文件:

在同一个文件夹中,我有一个 nuget.config:

在我的开发人员命令中,我键入:msbuild build.msbuild 但是没有安装 NuGet,因此在这个简单的场景起作用之前使用通配符没有多大意义。