问题标签 [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 投票
3 回答
1664 浏览

c# - 如何解决“错误 MSB3188:程序集 ... 必须经过强签名才能被标记为先决条件。”

我在这个板上看到了几个类似的问题,但我认为有几个问题会导致此消息,而我的特定问题可能不在其中,当然我的解决方案看起来比其他任何一个都简单和有效。

我有一个使用 packages.config 的项目。

我使用 Visual Studio UI 将项目引用从 package.config 迁移到 PackageReference ( https://devblogs.microsoft.com/nuget/migrate-packages-config-to-package-reference/ )。我这样做是因为它允许使用 msbuild /t:restore mysln.sln 进行构建——这不适用于 packages.config。

我认为这通常有效(我在其他项目上尝试了 5 或 6 次)。但是在我重建的一个项目中,我收到了错误消息:

0 投票
0 回答
1316 浏览

.net-core - 强制更新传递 nuget 包依赖项的最佳方法?

考虑一个 .NET Core 应用程序 ( ),它使用该模型A引用第三方 nuget 包 ( )。包对另一个包有自己的依赖关系():BPackageReferenceBC

B声明了一个依赖,C版本约束为>= 1.0.0. A没有编译时用法,C也没有直接引用它 -C是一个传递的运行时依赖项。

但是,包的 1.0.0 版本C(由构建获取)中有一个错误。该错误已在更新的版本中得到修复,发布到 nuget 并增加了次要版本(例如 v1.1.0)。

默认情况下,我的构建不会选择这个最新版本。我相信这是由于此处描述的“最低适用版本”规则: https ://docs.microsoft.com/en-us/nuget/concepts/dependency-resolution#dependency-resolution-rules

强制构建获取错误修复 1.1.0 版本的包的推荐方法是什么C

一种解决方案是CA. 但是,这感觉就像我正在打破封装,因为A不需要知道任何关于C.

理想情况下,包的作者B会更新他们的依赖C以使用较新的版本,但我对这个包没有任何控制权。

我还尝试Directory.Build.props在解决方案的根目录中使用文件,以尝试强制在整个解决方案中更新版本:

...但这不起作用(我假设“最低适用版本”规则仍然适用)。如果您使用而不是,它确实有效,但这只是将包安装到解决方案中的所有项目中。IncludeUpdate

我希望能够为构建过程提供一些“策略”,以强制获取更新的版本,但我还没有找到这样做的方法。


注意:我的实际示例比此处概述的示例更复杂。两者都是广泛使用的 Microsoft ASP.NET 包,并且B出现在依赖关系图中的几十个位置(我自己的应用程序从不直接引用该代码)。CC

0 投票
1 回答
63 浏览

c# - PackageReference Microsoft.AspNetCore.App 从 core 2.2 到 core 3 & 3.1 的方式变化

过去,在我的项目中,我创建了一个空白解决方案并添加

在类库中,所以我能够将这个类库项目引用给其他人并使用我需要的东西。例如,在我的解决方案中,我有Core文件夹和Web文件夹。我的 Web 应用程序从 Web 文件夹中的“asp.net core web application”开始,并引用了“Core”文件夹类库,如 core、data、services 和 ...。

现在使用 ASP.NET Core 3 我对这种方法有疑问,它会导致错误;我该如何实施这种方法?

例如,您可以在 nop 4.2 中看到 NopCommerce 方法,它与我的类似。对不起,我的英语不好。

0 投票
1 回答
455 浏览

msbuild - 为什么 PackageReference 的引用不适用于 msbuild 和共享项目?

从 packages.config 迁移到 PackageReferences(.NET4.5 项目)后,构建(msbuild)被破坏。

错误 CS0246:找不到类型或命名空间名称“anynugetpackage”(您是否缺少 using 指令或程序集引用?)

使用 VisualStudio 进行构建可以完美运行。所以我做了一些研究,发现包的恢复也适用于 msbuild。

该问题仅存在于未正确应用 PackageReference 引用的共享项目 (.shproj) 中。

一种解决方法是添加对 PackageReference 的库的修复引用,但是像这样,与 packages.config 相比,我失去了 PackageReference 的所有优势

您可以查看项目和不同的解决方案(分支):

packages.config
PackageReference
PackageReference 解决方法

有关构建和错误日志,请参阅 github 操作。

有没有更好的处理方法?

0 投票
1 回答
655 浏览

.net - nuget 包中带有 PackageReference 的道具和目标

我喜欢创建一个包含.props文件的 NuGet 包。

.props文件有以下内容:

在打包并将 nuget 推送到提要后,nuget 会被其他项目消耗,这很有效。

消费项目解释s.props和所有条件文件,并且PackageReferences 也被添加。

当我使用 VS2019 构建项目时,一切正常。dotnet build但是当我使用文件中的PackageReferences构建时,.props不会被添加。

我检查了project.assets.json它们,它们是不同的。VS2019 将工具添加到资产文件中:

但 dotnet build 没有添加它。

是否需要将属性或标志添加到 dotnet restore 命令?或者你知道为什么行为不同。

我的目标是消费项目将 dotnet 工具作为其项目中的私有资产。

0 投票
1 回答
2689 浏览

c# - PackageReference 不使用 ExcludeAssets = "runtime" 和 PrivateAssets = "none" 将 dll 复制到消费者(测试)项目输出

这里的简单设置:

  • 项目 A - .NET 4.7.2 框架库项目
    • 对 SeriLog 2.9.0 的包引用
      • 排除资产=“运行时”,
      • PrivateAssets="none",这是可选的,因为默认情况下它应该复制 DLL(设置 = "runtime")
  • TestProject B - .NET 4.7.2 框架单元测试项目
    • 项目 A 添加为 ProjectReference
    • SeriLog DLL 和所有依赖项都应该复制到这里

输出: SeriLog DLL不会复制到ProjectA的输出文件夹,也不会复制到TestProject B从我的角度来看, TestProjectB应该包含 SeriLog.dll。我错过了什么吗?或任何其他选择来实现这一目标?

备注: 据我了解PackageReference 格式规范,我正确使用了属性。

ExcludeAssets属性控制已定义项目的资产PrivateAssets控制使用项目 A 的项目的流程。

0 投票
1 回答
43 浏览

.net-core - 如何使用我自己的 DLL 而不是依赖包引用的 DLL

我正在使用一个A依赖于另一个包的 nuget 包(我们称之为它),我们称之为它B
为了包含A在我的项目中,我将.csproj文件更改为:

当我运行nuget restore包时B,也会从一些 nuget 源中消耗。
我想B用我自己创建的 DLL 替换包的 dll。我可以在我的本地机器上通过在 bin 文件夹中复制粘贴所需的 dll 来完成。但是如何在 Azure 网站上做同样的事情?反正有没有自动化这个过程?有什么方法可以告诉 nuget 不要B从 nuget 源获取 DLL 而是使用我想要的?

0 投票
1 回答
240 浏览

msbuild - 包装参考条件 - 排除某些项目

我在解决方案级别的 Package.props 文件中有以下条目:

我应该如何编辑它,以便为某些项目排除 StyleCop 的引用?就像是:

所以我希望“MyAwsomeProject”不会引用 StyleCop。

0 投票
2 回答
851 浏览

visual-studio - .Net PackageReference,明确定义依赖包的版本

在我的一个项目中,我使用依赖于Moq包的AutoFixture.AutoMoq包

在此处输入图像描述

在另一个项目中,我直接使用Moq包,即

问题是包版本解析期间的 Visual Studio / MSBuild / Nuget 总是选择最小依赖,即Moq 4.1.1308.2120 但我想使用最新版本的Moq 4.13.1。

如何告诉 Visual Studio/nuget 明确使用请求的版本?

更新:

当我尝试在 Nuget UI 中将依赖行为设置为最高时,我收到一条消息,指出它不适用于使用PackageReference方法的项目: 在此处输入图像描述

0 投票
0 回答
560 浏览

nuget - PackageReference 重定向底层包?

我正在使用 NuGet 包(IdentityModel.OidcClient 3.1.2),这会引发错误

bin文件夹中的版本是Newtonsoft.Json.dll v11.0.2.xx

所以我可能需要底层包 Newtonsoft.Json.dll 的绑定重定向,但我在哪里放置重定向?试过AutoGenerateBindingRedirects=true但没有解决它。