问题标签 [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.
msbuild - 还原旧包(net40、netframework40)时,较新版本的 NuGet.exe 无法解析框架匹配
在这上面花了两天的大部分时间之后,是时候寻求一些帮助了。
我正在修改我们的 CI 构建,并且在 .net 4.6.1 上有一个 VS2017 解决方案,使用 packages.config 样式的 nuget refs,TeamCity 使用 NuGet runner v3.4.4 来恢复包。它最初可能使用 VS2008 或 10 构建,然后在 2018 年转换为 2017。有人检查了 packages 目录,多年来一直如此。
是时候让它达到更现代的标准了。我将项目转换为使用 packageReference,现在正在使用 msbuild 和 restore;build 目标来恢复我的包并构建解决方案。除了这个包外,效果很好。
即使在 VisualStudio 2017 15.8.7 中,构建(当然会进行还原)也无法使用 packageReference 还原 smtp-impostor 包,并出现以下错误:
在搜索“network40”时,我无法让 Google 找到一个有用的帖子。
如果我使用 nuget3.4.4 CLI,它工作正常(它似乎调用 msbuild 4.0)。如果我使用 nuget 5.6 CLI,我会收到错误消息;它使用 Visual Studio 2017 附带的 msbuild。
我看到很多关于如何让 nuget 使用不同版本的 msbuild 的帖子,但我看不到如何告诉 msbuild 使用早期版本的 nuget!
我试过了:
- 将解决方案重新定位到 v4.0 - 发生同样的错误 - 错误的第一部分只是更改为 net40
- 将 csproj 文件标签中的 ToolsVersion 设置为 14.0
- 将 csproj 文件中的 PlatformToolsVersion 属性设置为 14.0。
没有骰子。
我真的不想为这个项目保留 packages.config(以及额外的 CI 构建步骤),也不想将包的单个 DLL 签入到我的 repo 中。它看起来更像是我将不得不放弃 packageReference 升级并坚持使用旧式 nuget runner 包恢复。
有人见过这个吗?“netframework40”来自哪里的任何想法以及为什么较新的nuget无法与net40匹配?
先感谢您!
visual-studio - 具有核心项目依赖项的 NuGet 框架包
我正在尝试从 .NET Core 3.1 项目中引用,这是一个仅net40
通过 NuGet 兼容性 shim 定位的 NuGet 包。该包已添加到我的项目中,但net40
依赖项未添加。
包的结构如下:
Visual Studio 的包管理器列出了依赖项,但是安装时,VS 的“预览更改”窗口没有列出依赖项,并且确实没有安装。PackageB
还针对net40
。
如果我这样做,它确实有效:
- 将依赖项包含在“任何”(空白)依赖组中以及下
net40
- 移除
net40
依赖组并将包直接列在<dependencies>
平面列表下 - 删除
net40
下面lib\
并使用平面列表
这些并不理想,因为它混淆了目标框架的真实性质。最后两个产生NU5128
于pack
。为了将来的参考,我应该提一下,即使是这些场景也需要从本地缓存中删除依赖项才能正常工作(肯定是一个错误?)。
关于如何从此类包中提取依赖项的任何想法?这根本不支持吗?一个很好的测试示例是“Polly.Net40Async”包。
(VS:16.6.5,dotnet:3.1.302,PackageReference,Windows 10)
c# - (Nuget PackageReference)即使我不添加对 Xamarin.Forms 的引用,Xamarin 应用程序也会构建
我有一堆 Xamarin.Forms 跨平台应用程序的解决方案。我正在进行重构,我正在将东西迁移到 Nuget PackageReferences。这样做时,我在引用 Xamarin.Forms 的便携式应用程序项目中遇到了一些问题,因此我决定从这些应用程序中卸载包并重新安装,然后一切正常。但是,在这样做时,我意识到如果我没有在便携式应用程序包上重新安装 Xamarin.Forms,事情仍然可以编译和工作。
有人可以向我解释一下,其中包含 Xamarin.Forms 代码的 C# 项目如何可能不需要引用 Xamarin.Forms 包来编译?这与 Nuget PackageReferences 有关系吗?
visual-studio - 使用“包引用”为项目重新添加“内容”的工具或方法
将项目(原始 VS 格式)转换为使用包引用。伟大的。
项目参考“不支持内容”。有问题的选择,虽然这里没有辩论。
一些使用过的包包含“内容”,不能或不会更新为使用“内容文件”。唔..
可以使用哪些半自动化工具/方法从“不支持 contentFiles” +的 NuGet 依赖项中复制“内容” ?只适用于直接包裹是可以的。
+当然,可以手动打开每个单独的 NuGet 文件并复制内容。这个问题不是关于“为什么”进行切换和/或任何优点或权衡和/或如何“应该”编写包。问题是关于能够将“内容”恢复到项目源代码树中的自动化或半自动化方法。
c# - Visual Studio References 显示未引用的 NuGet 包
我通过右键单击 VS 2019 中的 packages.config 文件将 .NET Framework 4.7.2 项目从 packages.config 转换为 PackageReferences 格式。
从那时起,Visual Studio 会显示我从“引用”节点中的项目中卸载的 NuGet 包的蓝色图标。真正奇怪的是,如果没有这个包,构建应该会失败,因为它在代码中使用,但构建成功!
- .csproj 文件中没有对此 NuGet 包的包引用。
- 项目目录下没有packages.config文件
- 我删除了 .vs 文件夹和旧包文件夹
- 重新启动 Visual Studio
- 问题依然存在
- 在 Visual Studio 中触发的 uninstall-package 命令表示未安装包。
- 然而,参考(蓝色图标)已显示并且项目已构建!
问题
- 如何从项目中完全删除这个包?
- 我现在如何阻止 Visual Studio 引用这个包?
.net - .net 标准旧 csproj,迁移到 packageReference
我想将 packages.config 迁移到 packagesReference。我有由 46 个项目组成的解决方案,对于 ASP.NET,无法迁移整个 .SLN,因此我们需要使用此解决方法逐个进行一个项目 -> asp.net 的 packageReference 问题
我已经成功了。但是当我尝试构建这个项目时,我遇到了多个错误,如下所示:
似乎项目没有看到包含的 NuGet。也许我们需要将它升级到新的 csproj?它仍然是旧的 2013/2015 版本。
第一个属性组如下所示:
下一个项目组是ProjectReference
和其他控制器、内容等。
谢谢, 拉法尔
visual-studio - 如何从 Xamarin (VS) 项目中导入的 nuget 包中排除某些目录
我正在使用某些第三方 nuget 包的 xamarin 移动应用程序,我想阻止该 nuget 包中的某些目录包含在最终版本中,但我找不到任何有关如何的信息从导入的第三方 nuget 包中排除特定文件/文件夹。(特别是我希望包中的一些本地化文件夹不被复制到输出目录)
我正在使用包参考格式。
c# - Visual Studio:将文件与其包一起复制到输出中
我有一个名为“A”项目的项目,它包含一些文件(如 dll 或其他文件)。
在我的主项目中,我使用“项目引用”来引用这个项目,并在 A 的 .csproj 中添加一些上下文,如下所示:
它看起来很好,文件总是被复制到我的主项目的输出文件夹中。
但是在我将A项目变成Nuget包并且我的主项目使用“包引用”来引用它之后,A项目中的文件就在我的主项目的输出文件夹中消失了。
有什么办法处理吗?
谢谢!
c# - Nuget 包在安装时会从其参考项目中复制静态文件
我有一个名为“A”项目的项目,它包含一些静态文件(如 dll 或其他文件)。
它的 csproj 如下
所以根据内容,无论我使用项目引用还是包引用来引用A,静态文件都会一直复制到输出文件夹。
然后我有一个名为“B”的项目,它使用项目引用来引用 A。
B的csproj部分如下:
现在我将 B 设为 Nuget 包,并由 C 项目(包参考)引用。
但是来自 A 的静态文件似乎没有出现在 C 的输出文件夹中。
有什么办法处理吗?
谢谢!
visual-studio - MSBuild 条件未评估
我有一个可以采用 3 种“风味”之一的应用程序,风味仅取决于项目中引用的 NuGet 包。为了简化构建,我想使用自定义属性来定义风味,然后在包引用上使用条件。应该可以使用 Visual Studio 或使用 MSBuild 命令行来构建应用程序。我将此添加到 PropertyGroup:
我可以看到自定义属性设置正确,只是忽略了条件这是我尝试过的:
- 如下所述设置 PackageReference 本身的条件:https ://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#adding-a-packagereference-condition
- 将条件包放在单独的 ItemGroup 中并在那里设置条件
- 与 #2 相同,但使用 Choose+When
只有 #3 有效,并且仅在 Visual Studio 中我需要一个可以在 Visual Studio 和 MSBuild 命令行中工作的解决方案
#1 看起来像这样:
#2 看起来像这样:
#3 看起来像这样:
我正在使用 VS2019 和 MSBuild 16 我错过了什么?