Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在多个NuGet解决方案之间共享相同的C#包?

如何在多个NuGet解决方案之间共享相同的C#包?
EN

Stack Overflow用户
提问于 2019-04-26 00:34:05
回答 1查看 1.5K关注 0票数 2

我正在和Newtonsoft.Json一起工作。Json.net)现在和多个C#解决方案需要引用它。似乎最方便和广泛使用的方法是用Newtonsoft.Json包管理器安装NuGet。但是我发现包安装在解决方案根目录(无论如何,安装是基于给定的解决方案),它的大小不能忽略(稍微超过10米),所以我想知道是否有一种优雅的方法在不同的C#解决方案之间共享这个包。

我搜索了Google,发现很少有令人满意的结果(可能是因为我没有正确地表达我的需求);唯一合理的答案是在目录和解决方案中创建一个.nuget文件夹,然后用一个NuGet.config文件填充它,如下所示:

  1. 在解决方案的根目录中创建一个.nuget文件夹(实际上输入".nuget.“)
  2. 在该文件夹中,创建一个文件NuGet.config。
  3. 在Visual 2015中,右键单击该解决方案并添加一个名为“.nuget”的新解决方案目录
  4. 右键单击该文件夹并选择添加现有文件并选择在(2)中创建的NuGet.config文件。
  5. 在NuGet.config文件中添加如下内容:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <config>
    <add key="repositoryPath" value="E:\JsonExamples\C#Examples\UseJsonInCSharp\packages" />
  </config>
</configuration>
  1. 重新启动Visual 2015。

但这不起作用,因为使用指令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using Newtonsoft.Json;

还没被认出来!也许还有其他的事情必须做,这是我不知道,但对退伍军人来说是常识?或者这可能是因为Newtonsoft.Json的版本太新,无法工作?有人能帮我吗?非常感谢!

还有一个词:我目前正在使用VS 2017,但我只找到了与VS 2015相关的答案,所以我想知道前面的方法,如果在VS 2015上有效的话,将永远适用于VS 2017。

EN

回答 1

Stack Overflow用户

发布于 2019-05-04 09:51:48

让我们首先澄清一些关于NuGet和项目中引用的事情:

  1. 项目中引用的工作是告诉该项目必须查看哪些外部代码--您不能这样做,您必须在每个要使用它的项目中引用Newtonsoft.Json。
  2. NuGet的工作是在某个文件夹中下载/恢复nuget --旧的NuGet 4版本的默认“哑”设置是在每个解决方案中分别设置一个软件包文件夹。让我们专注于如何使这变得更聪明。

选项1(建议)-将所有东西迁移到PackageReference

它是从VS 2017+中的2017+4开始提供的(我推荐至少VS 2017 15.7+,它为从老版本的NuGet版本自动迁移提供了向导)。这是引用NuGets最干净的方式,因为项目中的PackageReference并不硬编码NuGet下载位置。相反,它将此决定留给本地NuGet设置。默认情况下,它被设置为"%USERPROFILE%.nuget\packages“。不复制nuget包,它充当此计算机的全局缓存。要强制所有新项目默认使用PackageReference,您必须修改NuGet.config,下面是如何:Defaulting Package Management to PackageReference

选项2-为同一存储库中的所有项目指定公共NuGet位置

每个解决方案都加载NuGet配置设置。即使您使用NuGet,也建议为PackageReference设置一个公共配置文件,因为下载位置只是您可能希望集中管理所有解决方案的许多设置之一(另一个流行的设置是您希望使用的外部NuGet存储库)。NuGet下载位置设置被新PackageReference忽略,因此在混合场景中使用它是安全的。非常重要的是,使用此旧的NuGet项目使用对NuGet文件夹的硬编码引用,因此每次更改此NuGet位置设置时,都必须手动修复每个项目中的所有NuGet引用(通过手动编辑.csproj文件或删除和重新添加NuGets),因此明智地选择而不进行更改。

关于如何正确设置全局NuGet.config:的详细信息

首先,让我解释一下共享NuGet.config设置是如何工作的。NuGet从层次结构到根驱动器从解决方案位置扫描所有NuGet.config文件(它还检查所有.nuget文件夹)。如果检测到多个配置文件,则采用最接近解决方案的配置文件。例如,您有"C:\Code\Repository1\Project1\Solution1.sln“。如果您希望为NuGet文件中的每个解决方案设置公共的Repository1设置,那么将配置文件放到类似于"C:\Code\Repository1\NuGet.config“的位置。还要确保这是整个Repository1文件夹中唯一的配置文件。下一步是决定下载所有包的位置,例如"C:\Code\Repository1\NuGetPackages“。为了使一切在所有计算机上动态工作,在NuGet.config中放置相对路径,如下所示:

添加key="repositoryPath“value="NuGetPackages”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55863750

复制
相关文章
C# 存储相同键多个值的Dictionary
C盘下面有个根文件夹SaveFile,SaveFIle下面有两个子文件夹分别为,2018、2019,
用户7053485
2020/03/12
4.5K0
Cypress web自动化21-如何在多个tests之间共享cookies
Cypress 默认每个用例开始之前会清空所有的cookies,保证每个用例的独立性和干净的环境。 但是我们希望在一个js文件下写多个测试用例的时候,希望只调用一次登录, 记住cookies,后面的用例都默认是登录状态,这样测试的效率高一些。 实现cookies共享有2种实现方式
上海-悠悠
2020/05/29
1.9K0
多个Pod之间共享Volume以及详细配置
要在多个Pod之间共享Volume,可以使用Kubernetes的persistentVolumeClaim(PVC)来声明和访问共享的Volume。
一凡sir
2023/09/02
1.4K0
多个Pod之间共享Volume以及详细配置
C# 搭建自己的NuGet服务器,上传自定义NuGet包
以上就成功部署了自己的NuGet服务器了。关于.nupkg文件其实就是程序的安装包压缩文件,它包含了程序包的版本信息,dll及相关的外部依赖,NuGet安装包时会进行自动解压。因此上传至NuGet服务器Packages目录的只需要.nupkg文件。
用户9127601
2021/11/01
9720
C# 搭建自己的NuGet服务器,上传自定义NuGet包
以上就成功部署了自己的NuGet服务器了。关于.nupkg文件其实就是程序的安装包压缩文件,它包含了程序包的版本信息,dll及相关的外部依赖,NuGet安装包时会进行自动解压。因此上传至NuGet服务器Packages目录的只需要.nupkg文件。
zls365
2021/04/23
1.7K0
C# 搭建自己的NuGet服务器,上传自定义NuGet包
从零开始学习 dotnet 编译过程和 Roslyn 源码分析
本文整理我和 林德熙 学习的 dotnet 编译知识、Roslyn 源码分析知识,NuGet 知识。通过阅读本文可以从零散的碎片化博客中得到从零开始学习的轨迹。
walterlv
2023/10/22
4300
安装Nuget包
项目中添加包:dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
CN_Simo
2022/05/10
9970
安装Nuget包
如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)
运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号 下载并安装一下NuGetPackageExplorer:htt
逸鹏
2018/04/11
1.6K0
如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)
如何在微服务之间共享和同步代码
微服务架构非常适合构建可扩展的代码库,具有更少的耦合,更好的关注点分离,更高的弹性,结合不同的技术,最重要的是,更好的模块化和构建它的组件的可重用性。
February
2018/11/23
2.7K0
VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库
我在开发的时候需要使用到一些 DEBUG 库进行调试,但是我的库是通过 NuGet 给用户的,如果在 NuGet 里面使用到了 DEBUG 的库那么会让代码的运行效率降低。于是我就找到一个方法,可以在 NuGet 同时打包调试和发布的包,这样在用户调试的时候就可以使用调试的代码
林德熙
2019/04/22
2K0
VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库
C# 离线使用nuget
正常在我们使用nuget进行程序集下载的时候,直接在vs编辑器中直接进行操作,下载自己想要的各种程序,但是某些时候,在进行一些办公时,公司要求本机编码不能进行联网操作,那么这种情况下我们怎么进行nuget程序集下载了。
用户9127601
2021/11/01
9710
NuGet 修改包路径
通过 NuGet 安装包时,NuGet 先将包下载至一个统一的目录,默认路径是:C:\Users\用户名\.nuget\packages
丹枫无迹
2019/11/20
2.2K0
如何在WordPress网站之间共享用户和登录
wordpress为网站系统提供了相同的数据表结构,为快速实现多个WordPress网站之间共享用户数据提供了可能。wordpress如何实现如网易通行证等大站一样的共享用户登录呢?只需要将需要共享的数据库共用即可,我们这里只需要共享_user与_usermeta表,下面是完整实现过程。
许都博客
2021/06/15
1.9K0
多个FeignClient使用相同的name
FeignClient标签默认使用name属性作为bean name,name属性同时为服务名。 如果指定了contextId属性,则使用contextId作为bean name。 如此可为一个服务创建多个FeignClient: @FeignClient(name = "my-service-id", contextId = "my-service-id-api1") public interface Api1FeignClient { } @FeignClient(name = "my-service
路过君
2020/12/17
3.5K0
如何在多个应用程序中共享日志配置
有的时候你有多个应用程序,它们需要使用相同的日志配置。在这种情况下,你可以将日志配置放在一个共享的位置,然后通过项目文件快速引用。方便快捷,不用重复配置。
newbe36524
2023/08/23
2560
如何优雅地解决多个 React、Vue 应用之间的状态共享
前言 人生是个积累的过程,你总会有摔倒,即使跌倒了,你也要懂得抓一把沙子在手里。—— 丁磊 码过的每一个需求、踩过的每一个坑、修过的每一个 bug 、学过的每一个知识以及看过的每一篇文章都不会成为无
前端劝退师
2020/12/15
2.1K0
如何优雅地解决多个 React、Vue  应用之间的状态共享
面试官:sessionStorage可以在多个Tab之间共享数据吗?
英文 | https://fatfish.medium.com/interviewer-can-sessionstorage-share-data-between-multiple-tabs-c30983c61501
五月君
2023/09/06
4410
面试官:sessionStorage可以在多个Tab之间共享数据吗?
.net framework 4.0的NuGet包制作
为啥做这个呢,因为要将公司内部的老的.NET程序所引用的DLL进行统一管理。这里服务端使用了一个叫做NuGetServer(官网:NuGet Server)的开源工具,部署在内部的Web服务器上。
崔文远TroyCui
2021/09/18
1.7K0
.net framework 4.0的NuGet包制作
发布你的程序包到Nuget
1.新建一个.NET Standard 的类库项目 2.选择项目熟悉,在 package 栏目下填写我们的nuget包信息 3.选择我们的项目,点击“Pack" 打包 主要注意的是生成配置需改为Rel
晓晨
2018/06/22
6650
点击加载更多

相似问题

跨多个项目和解决方案的共享NuGet包

20

如何在多个共享项目和解决方案中同步NuGet包?

34

在解决方案之间共享项目时使用NuGet

28

Nuget安装相同解决方案项目的包。

10

Python如何在多个项目之间共享包

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文