- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在寻找关于哪种方法被认为是最佳实践的一些想法。
场景:.NET SVN 存储库由多个项目组成,其中一些项目共享相同的 NuGet 包。多个解决方案文件也存在,每个文件中都有项目的子集,有些重叠。
例子:
a.sln
--> proj1 - log4net, nunit(v1.0.0)
--> proj2 - log4net, json
--> proj3 - log4net, nunit(v1.0.0)
b.sln
--> proj2 - log4net, json
--> proj4 - nunit(v1.0.0)
当开发人员打开 a.sln
并为该解决方案中的所有项目更新 nunit(v1.0.0)
包时,问题就出现了,v2 .0.0
。这使得 proj4
的 nunit
仍在 v1.0.0
上,假设所有二进制文件都复制到一个输出文件夹,首先构建的解决方案将确定哪个版本的 nunit
可用。
方法 #1:组成一个项目,同时被a.sln
和b.sln
使用,其唯一目的是包含所有项目的所有NuGet 引用,并将所有文件输出到一个文件夹,比如 Externals
。修改所有项目以手动引用此文件夹中的 dll
。
方法 #2:更新包时要勤奋,并对每个解决方案重复该过程。
方法 #3:创建一个包含所有项目的解决方案,避免多个解决方案。
我有强烈的偏好,但希望获得社区反馈并持开放态度。
最佳答案
方法 #1 - 我看到的问题是它会强制对其他项目进行更新,从而导致潜在的编译问题。此外,您可能有一个项目更喜欢旧的 NuGet 包
方法 #2 - 根据 #1,此外,除非开发人员使用其他解决方案,否则他们可能不会考虑更新它们。我们开发人员在处理错误时可能会很挑剔
方法 #3 - 虽然从维护的角度来看更容易一些,但它不能保证某些项目都使用相同的 NuGet 数据包。例如nunit 的两个不同版本。在 Visual Studio 中安装和/或更新 NuGet 包时,开发人员可以覆盖哪些项目将接收包。根据项目的大小,一些开发人员可能不喜欢创建整体解决方案的想法(即使可以右键单击项目卸载项目),因为一般性能会受到影响
<在我看来,方法 #3 可能更容易,因为可以一步将同一包大量安装到所有项目中。 方法 #1 也很接近,但我担心您会发现您将不得不将 NuGet 包部署到其他项目中,而不管由于依赖关系 - “Type xxx is defined in an未引用的程序集。请将其添加到引用中”。
This leaves proj4's nunit still on v1.0.0, and assuming all binaries are copied to one output folder, the solution that is built first will determine which version of nunit becomes available.
同意,这让我印象深刻,这是我们遇到的最终问题。即使您的团队在任何地方都使用 log4net 版本 X 受到纪律处分,您很有可能会遇到这样的情况,即使用某些第三方库也需要 log4net 但版本 Y。于是版本不兼容的问题又出现了。
如果您发现您的解决方案必须部署多个版本的第 3 方程序集,您可能需要查看子 .NET AppDomains。这个想法是,您不是将程序集部署到一个大文件夹中(旧文件可以被新文件破坏,反之亦然),而是将每个程序集部署到一个根文件夹和子文件夹中,这些程序集绑定(bind)到特定的第三方 .dll。
您需要子 AppDomain 的原因是即使其他程序集位于不同的文件夹中,每个 AppDomain 也不能多次加载一个程序集。
例如
<my app folder>
|--folder a
|--log4net v1.dll
|--nunit 3.dll
|--folder b
|--log4net v2.dll
|--nunit 4.dll
毕竟,nUnit 在运行测试时会使用子 AppDomain。
关于c# - 使用多个 VS 解决方案和多个项目时的 NuGet 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33644393/
我只是想知道要安装哪个版本的 Visual Studio 2010(专业版或高级版)提示升级项目.. 项目包括:asp.net mvc、数据库和silverlight。 最佳答案 通常,由不同版本的相
目录 前言 四、技术选型 五、后端接口设计 5.1业务系统接口 5.2App 端接口 六、关键逻辑实现 6.1Red
目录 前言 一、需求分析 1.1发送通知 1.2撤回通知 1.3通知消息数 1.4通知消息列表 二、数据模型设计
目录 前言 一、多租户的概念 二、隔离模式 2.1独立数据库模式 2.2共享数据库独立数据架构 2.3共享数据库共享数据架构
导读: 虽然锁在一定程度上能够解决并发问题,但稍有不慎,就可能造成死锁。本文介绍死锁的产生及处理。 死锁的产生和预防 发生死锁的必要条件有4个,分别为互斥条件、不可剥夺条件、请求与保持条件和循环等待条
在浏览网页后,我找不到任何功能来执行此操作,我有可行的个人解决方案。也许它对某人有用。 **使用 Moment 插件转换日期。***moment(currentPersianDate).clone()
是否有一种解决方案可以很好地处理数字(1-10)手写?我试过tesseract,但我得到的只是垃圾。 理想情况下是 OSS,但商业也可以。 最佳答案 OpenCV 现在带有手写数字识别 OCR 示例。
在服务器应用程序上,我们有以下内容:一个称为 JobManager 的单例类。另一个类,Scheduler,不断检查是否需要向 JobManager 添加任何类型的作业。 当需要这样做时,调度程序会执
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this qu
当您尝试从 GitHub 存储库安装某些 R 包时 install_github('rWBclimate', 'ropensci') 如果您遇到以下错误: Installing github repo
问题在以下链接中进行了描述和演示: Paul Stovell WPF: Blurry Text Rendering www.gamedev.net forum Microsoft Connect: W
我正在寻找一种解决方案,使用标准格式 a × 10 b 在科学记数法下格式化 R 中的数字。一些同行评审的科学期刊都要求这样做,并且手动修改图表可能会变得乏味。 下面是 R 标准“E 表示法”的示例,
已编辑解决方案(如下...) 我有一个启动画面,它被打包到它自己的 jar 中。它有效。 我可以通过以下方式从另一个 java 应用程序内部调用 Splash.jar: Desktop.getDesk
什么是创建像 PageFlakes 或 iGoogle 这样的门户网站的好框架/包? ?我们希望创建一个为员工提供 HR 服务的员工/HR 门户,但我们也需要一种足够灵活的产品,以便我们可以使用它来为
我正在寻找一种解决方案,使用标准格式 a × 10 b 在科学记数法下格式化 R 中的数字。一些同行评审的科学期刊都要求这样做,并且手动修改图表可能会变得乏味。 下面是 R 标准“E 表示法”的示例,
如何将 solr 与 heritrix 集成? 我想使用 heritrix 归档一个站点,然后使用 solr 在本地索引和搜索该文件。 谢谢 最佳答案 使用 Solr 进行索引的问题在于它是一个纯文本
完整日历不包含工作时间功能选项(在任何一天的议程 View 中选择第一行和最后一行 - 例如公司不工作)。我做到了类似的事情: viewDisplay: function(view){
我正在使用 bootstrap 作为我的下拉菜单。但有一个问题, 如果我的下拉菜单有多级子菜单,那么它会显示在屏幕上,并出现底部滚动条。 如何将子菜单保留在屏幕内,我需要一个 jQuery 解决方案。
我有一个要转换为 C# 的 Excel 宏。目前我手动转到一个已经打开的 IE 窗口,从中复制所有内容(html 表)并粘贴到 excel 工作表中。然后我正在处理数据。这非常有效,因为将 html
我用谷歌搜索了一下,但没有找到好的结果。 现在我正在构建一个网站,我试图从一开始就从设计的角度使其尽可能正确。 我现在面临的问题是,在决定开始使用日志记录时,我需要一个项目来放置这段代码。由于我无法在
我是一名优秀的程序员,十分优秀!