首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自动NuGet 引用方式从 packages.config 升级为 PackageReference

自动NuGet 引用方式从 packages.config 升级为 PackageReference 发布于 2018-04-24 10:03...PackageReference 要求只能引用在某个目标框架下程序集。 如果是使用默认方式创建 NuGet ,基本上不会遇到这样问题。...除非你在创建 NuGet 时有自定义操作在根目录放了程序集。 解决升级后编译错误 最可能出现编译问题是 NuGet 引用版本冲突。...而 PackageReference 引用方式是自动管理依赖版本,只要每个都在允许版本范围之内,就自动选择版本,并显示在解决方案引用中。...4.0.0) 也就是说,引用两个不同要求依赖相同不同版本,于是 PackageReference 无法隐式推断依赖版本。

1.7K20

dotnet tool 自动找到项目里面重复 NuGet 依赖

使用新 SDK 风格 csproj 时候,允许 NuGet 进行依赖传递。...意思是如果我 A 项目安装了库 L 那么如果有 B 项目引用 A 项目,那么自动 B 项目也就安装了库 L 而不需要项目 B 再次手动安装。...本文安利大家一个工具,可以自动了解有哪些项目的哪些库是多余安装,通过依赖传递就能安装上,不需要手动安装,可以删除 这是一个 dotnet tool 工具,在使用之前需要使用如下命令进行安装 dotnet...,就可以了解具体项目上有哪些库可以删除 在删除掉多余库之后,就能减少 NuGet 版本冲突,也让 csproj 内容更少,在修改 csproj 时候冲突也更少 此工具在 GitHub 完全开源...%E8%87%AA%E5%8A%A8%E6%89%BE%E5%88%B0%E9%A1%B9%E7%9B%AE%E9%87%8C%E9%9D%A2%E9%87%8D%E5%A4%8D%E7%9A%84-NuGet

69520
您找到你想要的搜索结果了吗?
是的
没有找到

C#.NET 如何创建带有本机依赖多框架多系统 NuGet

正常如果你想写一个 .NET NuGet ,直接打包就好了,你引用程序集会出现在 NuGet lib 文件夹内。然而,如果我们 NuGet包含本机依赖的话怎么办呢?...制作方法 在前面的 7 种不同组合中,我们最终会做出两种不同来: 只包含托管依赖或只包含本机依赖“单”,其特点为这些依赖只需拷贝到输出目录即可,项目本身不会直接依赖它们类型(例如通过 P/...同时包含托管依赖和 C++/CLI 依赖“双包”,其特点为项目直接使用 C++/CLI 程序集里类型。 分别介绍制作方法。 本机依赖(单) 单特别好打。...所以如果你不是有特别需要的话,最好还是选单。 第一步:创建一个普通类库 第二步:将本机依赖文件拷至对应文件夹下 这里,我们建了一个“Assets”文件夹,用来放 NuGet 零散文件。...本机依赖自动根据 NuGet 依赖安装 .NET Framework 项目 对于 .NET Framework 项目,项目编译后,NuGet 自动将本机依赖里对应架构和框架文件拷贝到输出目录中

47950

项目文件中已知 NuGet 属性(使用这些属性,创建 NuGet 就可以不需要 nuspec 文件啦)

Sdk 自动生成 NuGet 优势,不需要 nuspec 文件啦。...NuGet 就可以不需要 nuspec 文件啦) - 吕毅 NuGet 相关属性也分为全局属性和属性两类。...所以很明显——这不是用来给开发者设置属性,是用于辅助我们生成打包工具。 配置属性 这些属性影响生成 NuGet 过程。... 引用项目或指定部分是本项目的依赖。默认为 all。 引用项目或指定部分不是本项目的依赖,应该排除。... 引用项目或指定部分依然是本项目的依赖,但是在打 NuGet 时不作为依赖(不会传递到下一个项目)。

1.9K10

.net 知新:【4】NuGet简介和使用

) 也就是说安装VS时候自动包含在工作负载中,对于.net 5 也可以直接安装.NET SDK,如之前.net 知新:【1】 .Net 5 基本概念文章介绍中可以看到.NET SDK是包含了CLI...PackageReference 仅列出那些直接安装在项目中 NuGet ,不会显示引用包含低级依赖更加简洁。 比如我们使用nuget安装NPOI,它依赖如下: ?...在.net frameworkpackages.config文件中看到NPOI和它依赖 ? 在.net 5目文件中只有NPOI ? 第二个就是两个工具功能有差异 ?...创建发布 首先需要设置属性,创建需要以下属性。 PackageId,标识符,在托管库中必须是唯一。 如果未指定,默认值为 AssemblyName。....nuspec 文件是包含元数据 XML 清单,.nuspec 当你创建时将生成。

2.1K40

如何创建一个基于 MSBuild Task 跨平台 NuGet 工具

---- 关于创建跨平台 NuGet 工具博客,我写了两篇。...我分为两篇可以减少完成单个任务理解难度: 如何创建一个基于 MSBuild Task 跨平台 NuGet 工具 如何创建一个基于命令行工具跨平台 NuGet 工具 第零步:前置条件 第一步...,在这个文件夹中文件会在编译时拷贝到输出目录(保持文件夹结构) + content/ // 这里放 .props 和 .targets 文件,自动NuGet 导入,成为项目的一部分(要求文件名与名相同...) + build/ // 这里也是放 .props 和 .targets 文件,自动NuGet 导入,成为项目的一部分(要求文件名与名相同) + buildMultiTargeting/ //...第三步:编写 Target .targets 文件是对项目功能进行扩展关键文件,由于安装 NuGet 自动导入此文件,所以它几乎相当于我们功能入口。 现在,我们需要徒手编写这个文件了。

1.3K10

帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖 NuGet

如果你希望做一个 NuGet 工具,那么这个一定不能作为依赖传递给下一个。典型例子,做一个生成版本号工具 NuGet ,或者做一个代码分析器。...本文将解决 NuGet 几个坑,真正做到绝对没有的依赖传递。 ---- 我们遇到了什么问题 如果你使用了 GitVersion 这款 NuGet 自动修改你版本号,那么你可能遇到这个问题。...如何创建一个基于命令行工具跨平台 NuGet 工具 如何创建一个基于 MSBuild Task 跨平台 NuGet 工具 官方提供解决方案 官方在非常早期 2.7 版本就提供了 developmentDependency...至于如何查看自己 NuGet 版本号,请参见:获取 Nuget 版本号 - 林德熙 我试图寻找解决方案 为 A 项目添加去除依赖代码 我们创建一个项目 Walterlv.PackageDemo.A...▲ 项目的结构 以下是 A 项目的 csproj 文件,包含将 Package.targets 在打包 NuGet 时改名部分。

90450

是时候将WPF控件库从.Net Framework升级到.NET Core 3.1

迁移到 PackageReference NuGet 引用 引用了Nuget旧.NET Framework项目会将引用Nuget信息记录在packages.config文件中,例如在示例项目中...要迁移到PackageReference,先尽可能升级引用Nuget,然后选中项目中packages.config,在右键菜单中选中“将 packages.config 迁移到 PackageReference...在弹出对话框列出顶级依赖和传递依赖,还会询问是否将后者升级到顶级依赖,这个项目无需做任何改变,直接点击“确定”: ? 迁移完成后会得到一个报告: ?...打开Kino.Toolkit.Wpf.csproj,会发现少了些东西,但多了下面这段,这段就是经过精简Nuget引用,在“管理Nuget程序页面也可以看到已安装Nuget变少了: ? ?...完成这一步后还原Nuget,该升级升级,运行下确认升级没有出错,然后进行下一步。 4.

4K10

dotnet restore

为了防止运行隐式 NuGet 还原,可以通过上述任意命令使用 --no-restore 标记禁用隐式还原。 指定源 为了还原依赖NuGet 需要所在源。...若要指定其他源,请执行以下任一操作: 在项目目录中创建自己 nuget.config 文件。 有关详细信息,请参阅本文后面介绍常见 NuGet 配置和 nuget.config 差异。...有关如何使用经过身份验证信息,请参阅使用经过身份验证源中。 全局文件夹 对于依赖,可以使用 --packages 参数指定还原操作期间放置还原位置。...--force-evaluate 即使锁定文件已存在,也强制还原以重新评估所有依赖。 -?|-h|--help 打印出有关如何使用命令说明。...-s|--source 指定要在还原操作期间使用 NuGet URI。 此设置替代 nuget.config 文件中指定所有源。 多次指定此选项可以提供多个源。

1.1K30

C# WPF实战项目升级了

升级步骤 step1 :将packages.config迁移到 PackageReference(非必须) 这样做好处包括精简内容与以及不再需要额外packages.config文件 step2...:在弹出对话框列出顶级依赖和传递依赖,还会询问是否将后者升级到顶级依赖,这个项目无需做任何改变,直接点击“确定”: step3:打开Caburn.Micro.Hello.csproj,会发现少了些东西...,但多了下面这段,这段就是经过精简Nuget引用,在“管理Nuget程序页面也可以看到已安装Nuget变少了: 3.0.3 <PackageReference Include...支持WPF.NET最低版本是4.6.1,所有这些平台在3.x版本中仍然受支持. -. 重大变化,以下是4.0.0版本中包含更改。 目标平台已更改,以支持新.NET平台版本。

90420

.NET7 一个实用功能-中央包管理

依赖管理是 NuGet 核心功能。Nuget管理单个项目的依赖关系很容易,只需要每个项目维护自己Nuget依赖与对应版本。...但是,管理多项目解决方案依赖关系可能变得很困难,因为它们规模和复杂性开始扩大,每个项目依赖相同Nuget版本可能不同。...在您管理许多不同项目的公共依赖情况下,您可以利用 NuGet 中央包管理功能从一个位置轻松完成所有这些工作。...要开始使用中央包管理,您可以在解决方案根目录中创建一个 Directory.Packages.props 文件,并将文件中 ManagePackageVersionsCentrally 属性设置为...,您可以使用您熟悉和喜爱语法来管理,但不需要设置版本。

44710

帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖 NuGet

典型例子,做一个生成版本号工具 NuGet ,或者做一个代码分析器。 本文将解决 NuGet 几个坑,真正做到绝对没有的依赖传递。...---- 我们遇到了什么问题 如果你使用了 GitVersion 这款 NuGet 自动修改你版本号,那么你可能遇到这个问题。...如何创建一个基于命令行工具跨平台 NuGet 工具 如何创建一个基于 MSBuild Task 跨平台 NuGet 工具 官方提供解决方案 官方在非常早期 2.7 版本就提供了 developmentDependency...我试图寻找解决方案 为 A 项目添加去除依赖代码 我们创建一个项目 Walterlv.PackageDemo.A 模拟前面提到 A,创建一个项目 Walterlv.PackageDemo.B 模拟前面提到...▲ 项目的结构 以下是 A 项目的 csproj 文件,包含将 Package.targets 在打包 NuGet 时改名部分。

75920

gRPC遇见.NET SDK和Visual Studio:构建时自动生成编码

我们一直倾听,现在很自豪地介绍从Grpc.Tools NuGet1.17版本开始,.NET C#项目中Protocol Buffer和gRPC服务.proto文件集成编译。...https://raw.githubusercontent.com/grpc/grpc/master/examples/protos/helloworld.proto 接下来,将必需NuGet添加到项目中...首先,默认情况下,.csproj项目文件自动在其目录中找到所有.cs文件,尽管Microsoft现在建议禁止这种通配行为,所以我们也决定不通配.proto文件。...这是有道理,因为程序包含编译器、代码生成器和导入文件,这些在.proto文件编译项目之外是不需要。虽然,在这个简单演练中并非严格要求,但始终应该是你标准做法。...分享你经验 与任何复杂功能初始版本一样,我们很高兴收到你反馈。有什么不符合预期工作?你有不容易用新工具覆盖场景?你是否知道如何改善工作流程?

1.9K20

dotnet 使用 SourceLink 将 NuGet 链接源代码到 GitHub 等仓库

在发布 CBB 作为 NuGet 时候,我期望开发者在使用我库进行调试,可以自动链接代码到对应打包 GitHub 上代码,可以从本地拿到对应源代码进行调试。...GitHub Action 进行自动构建时候,打包 NuGet 可以链接到本次打包 commit 代码,那么只需要安装 Microsoft.SourceLink.GitHub 库,同时额外添加一些配置就可以...-- 本地构建,也许没有记得 commit 就构建,此时 nuget 源代码是不对,上传上去让调试诡异 --> <!...在本地构建时候自动添加了源代码链接,也许本地代码没有 commit 而此时拿到 commit 也就不对了,或者本地 commit 了但是没有推送,然后也忘了推,那么开发者拿到这个 NuGet 将会找错...在 dotnet 里面使用 pdb 符号文件是用来方便 VS 等工具进行调试,这个文件作用就是告诉调试工具,对应代码和二进制 dll 关系 而在 NuGet nupkg 包含 pdb 文件

1.3K30

《从零开始学ASP.NET CORE MVC》:ASP.NET Core Web 项目文件(四)

PackageReference:顾名思义,此元素用于包含对为您应用程序安装所有NuGet引用。在项目文件中,我们有以下2个NuGet。...metapackage本身是没有任何内容,它只是包含了其他依赖信息。 您可以在解决方案资源管理器中NuGet下找到此元数据,而NuGet又位于依赖(Dependencies)下。...展开元数据时,您可以找到所有依赖。 ?....NET Core团队建议依赖SDK指定隐式版本,而不是在引用上显式设置版本号。 如果目前还不完全清楚,请不要担心。 我们将在即将发布视频中详细讨论metapackage和隐式版本。...Microsoft.AspNetCore.Razor.Design:此软件包包含对RazorMSBuild支持,并由Microsoft.AspNetCore.App metapackage引用。

1.3K30

如何最快速地将旧 NuGet (2.x, packages.config) 升级成新 NuGet (4.x, PackageReference)

如何最快速地将旧 NuGet (2.x, packages.config) 升级成新 NuGet (4.x, PackageReference) 发布于...然而迁移完才发现,这个项目竟然还依赖了大量NuGet 2.x 时代发布 NuGet ,这些并不能在 PackageReference 下好好工作。 于是,我准备将所有这些都进行升级。...关于自动迁移 NuGet 包管理方式,可以阅读:自动NuGet 引用方式从 packages.config 升级为 PackageReference - 吕毅。...如果有一些行为依赖于此脚本,那么这个 NuGet 行为可能不正常。 但是,不用担心!...所以一小部分特别依赖于 install.ps1 NuGet 是没有办法在新格式中生效

67310

.NET Core部署中你不了解框架依赖与独立部署

创建独立部署时,.NET Core 工具自动包含应用程序所指向 .NET Core 版本最新服务运行时。 (最新服务运行时包括安全修补程序和其他 bug 修复程序。)..." /> 如果尚未安装,请下载包含第三方依赖 NuGet 。...若要下载该,请在添加依赖后执行 dotnet restore命令。 因为依赖在发布时已从本地 NuGet 缓存解析出来,因此它一定适用于你系统。...当为具有此类第三方依赖应用程序创建 FDD 时,已发布输出针对每个本机依赖支持(存在于 NuGet 中)运行时标识符 (RID) 包含一个文件夹。...,请将包含第三方依赖 NuGet 包下载到系统。

1.9K20

阻止某个 NuGet 意外升级

阻止某个 NuGet 意外升级 2018-06-29 09:59 出于兼容性考虑,我们可能不再更新某个项目的 NuGet 。...然而,团队开发软件可能因为某个小伙伴不知道这样历史问题,从而手抖将某个不应该更新 NuGet 更新了,于是迁移就挂了。 本文提供了一种方法来避免某些特定 NuGet 升级。...▲ 当小伙伴打开包管理器时候,会发现版本不一致,然后就不小心升级了 思路 NuGet 使用 PackageReference 来管理所有的引用,于是我试图通过隐藏 LiteDB PackageReference...而一个典型隐藏方法便是使用 Target。不在 Target 里面的属性和是提前计算好,而 Target 里面的属性和是编译时才计算。...搜索 @(PackageReference) 发现有很多 Target 都依赖于一个名为 CollectPackageReferences Target。

1.3K20

Roslyn 读取 PackageReference 版本号和内容

在写 msbuild 预编译逻辑,如果想要拿到项目安装 NuGet 库和版本,可以通过获取 PackageReference 方法获取 获取方法是放在 Target 里面,如下面代码 <Target...% 来引用每一个(Item)中元数据 项目文件代码如下 <TargetFramework...github 请小伙伴自己使用命令行试试 更多编译相关请看手把手教你写 Roslyn 修改编译 其实在 msbuild 里,如果小伙伴读过吕水大大 帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖...NuGet - walterlv 那么贺喜,请试试下面的代码 <TargetFramework...,在这里面更新了一个随意 NuGet ,将 PrivateAssets 设置为 123 值 <Target Name="LaldalllayjeaCawerequrwai" BeforeTargets

58720

解读 Microsoft.NET.Sdk 源码,你能定制各种奇怪而富有创意编译过程

Microsoft.NET.Sdk 目录结构 在打开看 Microsoft.NET.Sdk 目录结构后,我们可以发现这几乎就是 NuGet 要求目录结构。...关于 NuGet 目录结构,我在下面两篇文章中都有提到过: 如何创建一个基于 MSBuild Task 跨平台 NuGet 工具 如何创建一个基于命令行工具跨平台 NuGet 工具 官方对...不过,Sdk 类型 NuGet 多一个 Sdk 文件夹。 ?...CollectPackageReferences 用于收集 PackageReference 收集到所有依赖(也就是 NuGet 依赖) CoreCompile 核心编译过程 GenerateAssemblyInfo...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后作品务必以相同许可发布

1.3K30
领券