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

visual-studio - 如何添加 dotnet 仅编译时依赖项

我有一个包,它应该只是一个编译时依赖项,即包含在构建中但不是输出的一部分。就像 "CopyLocal=false" 在非 sdk 项目中工作。

我尝试过<ExcludeAssets>runtime</ExcludeAssets>哪种PackageReference作品,但不一致。有时,依赖项也会从构建中排除。(有时重新打开解决方案会修复它。这都是非常随机的)

所以我有两个问题:

  1. 排除“运行时”是否应该也将其从构建中排除,还是一个错误?
  2. 是否有另一种方法可以在构建中包含依赖项但从运行时排除它。

背景:

我有两种需要此功能的依赖项。一种是许可产品,其中使用程序集的“通用”版本进行构建。类似于 Visual Studio 中的参考程序集。真正的组装在生产环境中可用。

第二个是只包含常量的程序集。运行时不需要它,因为它没有被使用。

排除仅常量程序集只是装饰性的,但运送“通用”程序集会导致问题,例如更新它们可以覆盖真实程序集。

0 投票
1 回答
44 浏览

nuget - VSIX - 包括 PackageReference 输出组

目前我们通过以下方式引用另一个项目,以便将其完全包含在 VSIX 包中。

在我们将“旧”Nuget 引用转换为新的 PackageReference 格式之前,这一切正常。我们看到的是包引用的输出文件不再包含在 VSIX 包中。是否有一个额外的输出组可以包括在内来解决这个问题?

0 投票
1 回答
195 浏览

installation - 从 packages.config 迁移到 PackageReference 后 VS2019 MSI 安装程序错误 2727

我有一个控制台应用程序在 Visual Studio 2019 的 .NET Framework 4.7.1 上运行,带有 Microsoft Visual Studio 安装程序项目(MSI 安装程序)。

packages.config迁移到PackageReference后,.msi安装程序在收集所有安装程序输入并开始安装后返回以下错误。

安装程序在安装此软件包时遇到意外错误。这可能表明此软件包有问题。错误代码是 2727。

.msi在迁移之前创建的安装程序可以正常工作。迁移后可执行文件和项目工作正常。问题仅出在安装程序上。.msi从 VS 2019 项目和生成的文件安装时,可以重现该问题。

Windows 事件查看器和安装程序日志中有错误:

远程计算机上的事件查看器

MSI 安装程序登录本地计算机

日志中没有其他内容具有该值_7F06229DCDB74690AC0D18DBD0357B3B。此值在安装之间是相同的。这不是安装程序属性中的ProductCodeUpgradeCode

设置

  • Visual Studio 2019 企业版
  • Windows 控制台项目(作为服务运行)
  • .NET 框架 4.7.1
  • Microsoft Visual Studio 安装程序项目 1.0.0 扩展
  • 安装程序在 Windows 10 Pro 和 Windows Server 2016 上运行

我尝试了什么:

  • 清理并重建一切
  • 手动创建安装程序应该创建的所有目录
  • 从安装程序中删除了未使用的依赖项(dll) - 它们以红色突出显示。
  • 按照另一个 SO 答案的建议添加<SatelliteResourceLanguages>en</SatelliteResourceLanguages>到文件中*.csproj

所有代码都已备份,因此我可以返回package.config但不希望这样做,除非找不到解决方案。

注意: 无论出于何种原因,.msi迁移后的大小几乎是迁移前的两倍.msi

更新

安装程序在“选择安装文件夹”对话框(发生故障时不显示)之前失败。

这是安装程序失败的屏幕。 这是安装程序失败的屏幕。

我还尝试将分支恢复到迁移之前,但由于迁移更改仍然存在并阻止安装程序工作,因此恢复不起作用。我不得不删除所有文件并从 Git 中恢复它们,以最终删除迁移的包并让安装程序正常工作。

0 投票
0 回答
14 浏览

c# - 将packages.config迁移到packagereference时,依赖拓扑会发生哪些变化?

当只有依赖列表的 package.config 迁移到 packagereference 时,依赖图会发生什么?依赖图和以前一样吗?

0 投票
0 回答
13 浏览

.net - packagereference和packages.config下的绑定重定向有什么区别?

在多个 GitHub 问题上,您可以看到 packages.config 和 Package Reference 之间存在差异。大多数解释:packages.config 是在下载时绑定的,Package Reference 是在运行时绑定的,但具体的区别是什么?绑定的包版本不同吗?哪个包不一样?或者是其他东西?非常感谢您的帮助

0 投票
0 回答
328 浏览

.net - net6.0 向后兼容

net6.0 是否与 net5.0 目标包兼容?无法在谷歌上轻松找到答案。

我们有一个针对 net6 的新升级项目

PackageReference

我们得到 在此处输入图像描述

这是支持还是应该工作?

作为附加信息,这是 .net6 arm64

0 投票
0 回答
11 浏览

visual-studio - 签入解决方案中可移植库中的 NuGet 库 Newtonsoft.json 引用错误

我最近检查了 github 一个我最近更新到 VS2022 的解决方案。当我在另一台机器上克隆解决方案时,在一个可移植库项目中,通过 NuGet 安装的库 Newtonsoft.Json 的 using 语句出现构建错误。另一个具有相同 NuGet 参考的可移植库项目构建良好。如果我删除 NuGet 引用并将其重新添加到失败的项目中,它就可以工作。两个项目都有相同的 package.config 文件。奇怪的是,我签入解决方案的开发机器上的解决方案资源管理器的参考视图显示了该项目中 Newtonsoft.Json 的不同图标,该图标无法在另一台机器上构建。在良好构建的机器上,它看起来像这样:

好机器的解决方案资源管理器图像

在错误的构建机器上,解决方案资源管理器显示中缺少 Newtonsoft.Json 引用,即使 NuGet 包管理器将其显示为已为项目安装。卸载 Newtonsoft.Json 并重新安装后,Newtonsoft.Json 的图标与图像中 JTLanguageModelsPortable 库显示的图标相同。

这是否与新的 PackageReference 机制有关?我可能已经在一段时间前完成了右键单击迁移。如果是这样,为什么它在签入版本中不起作用?办理登机手续是否遗漏了什么?我可以回到 package.config 文件吗?(我将此文件添加回项目中,但没有修复它。)

0 投票
0 回答
36 浏览

c# - 包含带有 PackageReference 的 WinSCP 将 Winscp.exe 复制到我的包中

我创建的 NuGet 包中的 WinSCP.exe 文件有问题。我在我的项目中引用 WinSCP 如下:

打包我的 NuGet 包后,将 winscp.exe 复制到 contentFiles 中的包中。当我在其他项目/NuGet 包中引用我的包时,winscp.exe 也会复制到包中。我不喜欢这样,因为我想在包还原时使用参考并下载它(显然)。

但我不知道如何从我的包中排除 .exe。

我试过这个:

这适用于第一个/最低的包,不复制 .exe 并且在 nuspec 中设置引用。但是对于引用 MY 包(在 nuspec 中引用 WinSCP)的更高包,不会恢复 .exe 文件。

据我所知,一种解决方法是为每个使用我的第一个/最低包的包添加,再次使用相同的参考:

但我不认为,这是预期的方式..

我想知道 .nupkg 的 nuget-package 结构是否是问题/行为的根源。Winscp.dll 存储在lib/net40中,但 Winscp.exe 位于tools/文件夹中。微软官方文档没有很好地描述 .exe 文件应该存储在哪里以及“工具”的用途......

谢谢你的帮助。

0 投票
0 回答
30 浏览

.net - 将 .NET Framework packages.config 迁移到 PackageReferences 删除了大多数引用并显示警告和错误

我有一个遗留的 .NET Framework 解决方案 (ASP.NET),我正在尝试慢慢解决技术债务。我试图将 packages.config 移动到解决方案中 5 个项目中的 4 个(非 ASP.NET 项目)中的 PackageReferences。其中一个项目,一个旧的 SpecFlow 单元测试项目,被“迁移”到了新格式,但是它的引用大部分被删除了,我的项目无法找到所有新的包,即使 PackageReferences 现在在 csproj 中被正确引用文件而不是已删除的 packages.config 文件。

我所做的只是将Tools->Options->NuGet Package Manager选项更改为PackageReference,然后上下文单击项目以选择Migrate to PackageReference项。我还选择了它给我的列表中的所有 Transitory(?) 包。然后我让 Visual Studio 运行它的进程。我正在使用 Visual Studio 2019,但此解决方案是使用较旧的软件和版本制作的(在此过程之前它确实在 VS 2017 和 2019 中运行)。

当我在 NuGet 包资源管理器窗口中查找它们并查看已安装的窗口时,我确实看到了 NuGet 包。至少我看到了其中的一些(我没有仔细看,因为有几十个)。

  1. 引用被删除但没有像我的其他项目一样重新填充的原因是什么?
  2. 有没有一种简单的方法可以恢复我的参考资料,或者我必须一次将它们添加回来?
  3. 在“添加引用”弹出窗口中,我找不到我的 NuGet 包或我之前可以引用的内容。它们应该位于哪里?我缺少从系统和 Microsoft 包到第三方和我们自己的第三方包的所有内容?
0 投票
0 回答
13 浏览

visual-studio - 使用时恢复 Nuget 包正在冻结视觉工作室

我用<PackageReference Include = "PackageName" Version = "*"/>

所以每次我构建项目时,我都会恢复最新版本。我从使用 NuGet 包的本地源代码调试和编辑代码中获得了上述语法

经过多次搜索。我不知道为什么?我尝试卸载,重新加载项目。重新启动Visual Studio,但是当指定正常版本时它正常加载?为什么尝试使用上述语法恢复最新版本时会挂起?上面的语法错了吗?

下面的构建状态是在恢复 nuget 包上挂起......