问题标签 [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.
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 次)。但是在我重建的一个项目中,我收到了错误消息:
.net-core - 强制更新传递 nuget 包依赖项的最佳方法?
考虑一个 .NET Core 应用程序 ( ),它使用该模型A
引用第三方 nuget 包 ( )。包对另一个包有自己的依赖关系():B
PackageReference
B
C
包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
?
一种解决方案是C
从A
. 但是,这感觉就像我正在打破封装,因为A
不需要知道任何关于C
.
理想情况下,包的作者B
会更新他们的依赖C
以使用较新的版本,但我对这个包没有任何控制权。
我还尝试Directory.Build.props
在解决方案的根目录中使用文件,以尝试强制在整个解决方案中更新版本:
...但这不起作用(我假设“最低适用版本”规则仍然适用)。如果您使用而不是,它确实有效,但这只是将包安装到解决方案中的所有项目中。Include
Update
我希望能够为构建过程提供一些“策略”,以强制获取更新的版本,但我还没有找到这样做的方法。
注意:我的实际示例比此处概述的示例更复杂。两者都是广泛使用的 Microsoft ASP.NET 包,并且B
出现在依赖关系图中的几十个位置(我自己的应用程序从不直接引用该代码)。C
C
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 方法,它与我的类似。对不起,我的英语不好。
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 操作。
有没有更好的处理方法?
.net - nuget 包中带有 PackageReference 的道具和目标
我喜欢创建一个包含.props
文件的 NuGet 包。
该.props
文件有以下内容:
在打包并将 nuget 推送到提要后,nuget 会被其他项目消耗,这很有效。
消费项目解释s.props
和所有条件文件,并且PackageReference
s 也被添加。
当我使用 VS2019 构建项目时,一切正常。dotnet build
但是当我使用文件中的PackageReference
s构建时,.props
不会被添加。
我检查了project.assets.json
它们,它们是不同的。VS2019 将工具添加到资产文件中:
但 dotnet build 没有添加它。
是否需要将属性或标志添加到 dotnet restore 命令?或者你知道为什么行为不同。
我的目标是消费项目将 dotnet 工具作为其项目中的私有资产。
c# - PackageReference 不使用 ExcludeAssets = "runtime" 和 PrivateAssets = "none" 将 dll 复制到消费者(测试)项目输出
这里的简单设置:
- 项目 A - .NET 4.7.2 框架库项目
- 对 SeriLog 2.9.0 的包引用
- 排除资产=“运行时”,
- PrivateAssets="none",这是可选的,因为默认情况下它应该复制 DLL(设置 = "runtime")
- 对 SeriLog 2.9.0 的包引用
- TestProject B - .NET 4.7.2 框架单元测试项目
- 项目 A 添加为 ProjectReference
- SeriLog DLL 和所有依赖项都应该复制到这里
输出: SeriLog DLL不会复制到ProjectA的输出文件夹,也不会复制到TestProject B。从我的角度来看, TestProjectB应该包含 SeriLog.dll。我错过了什么吗?或任何其他选择来实现这一目标?
备注: 据我了解PackageReference 格式规范,我正确使用了属性。
ExcludeAssets属性控制已定义项目的资产。PrivateAssets控制使用项目 A 的项目的流程。
.net-core - 如何使用我自己的 DLL 而不是依赖包引用的 DLL
我正在使用一个A
依赖于另一个包的 nuget 包(我们称之为它),我们称之为它B
。
为了包含A
在我的项目中,我将.csproj
文件更改为:
当我运行nuget restore
包时B
,也会从一些 nuget 源中消耗。
我想B
用我自己创建的 DLL 替换包的 dll。我可以在我的本地机器上通过在 bin 文件夹中复制粘贴所需的 dll 来完成。但是如何在 Azure 网站上做同样的事情?反正有没有自动化这个过程?有什么方法可以告诉 nuget 不要B
从 nuget 源获取 DLL 而是使用我想要的?
msbuild - 包装参考条件 - 排除某些项目
我在解决方案级别的 Package.props 文件中有以下条目:
我应该如何编辑它,以便为某些项目排除 StyleCop 的引用?就像是:
所以我希望“MyAwsomeProject”不会引用 StyleCop。
nuget - PackageReference 重定向底层包?
我正在使用 NuGet 包(IdentityModel.OidcClient 3.1.2),这会引发错误
bin文件夹中的版本是Newtonsoft.Json.dll v11.0.2.xx
所以我可能需要底层包 Newtonsoft.Json.dll 的绑定重定向,但我在哪里放置重定向?试过AutoGenerateBindingRedirects=true
但没有解决它。