热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在调试中使用项目引用,在发布中使用Nuget-UseProjectReferenceinDebugandNugetinRelease

Iwouldliketoworkinmyproject(A)andadependentNugetpackage(B)atthesametime,withoutt

I would like to work in my project (A) and a dependent Nuget package (B) at the same time, without the need to release the nuget package on each change.

我想同时在我的项目(A)和一个独立的Nuget包(B)中工作,而不需要在每次更改时发布Nuget包。

Is it possible to do a project-reference the Nuget project (B) from the Solution (A) when building Debug. And when building Release use the Nuget package from Source?

在构建调试时,是否可以从解决方案(a)中引用Nuget项目(B)。当构建版本使用来自源代码的Nuget包时?

2 个解决方案

#1


3  

One way is to manually edit the csproj file. If you have currently referenced the NuGet package, you will have a part in the csproj file like this:

一种方法是手动编辑csproj文件。如果您当前引用了NuGet包,那么您将在csproj文件中拥有如下部分:

....

  
    ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll
    True
  
  
  
  
  
  
  
  

....

In this example, log4net is used. For your NuGet package, the public key token, version and so on is different. You can no change it to:

在本例中,使用log4net。对于NuGet包,公钥标记、版本等等是不同的。您不能将其更改为:

  
    
      Debug\log4net.dll
      True
    
  
  
    
      ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll
      True
    
  

The Condition attribute in the ItemGroup element is doing the job between debug and release.

ItemGroup元素中的Condition属性在调试和发布之间执行。

#2


4  

Is it possible to do a project-reference the Nuget project (B) from the Solution (A) when building Debug. And when building Release use the Nuget package from Source?

在构建调试时,是否可以从解决方案(a)中引用Nuget项目(B)。当构建版本使用来自源代码的Nuget包时?

Certainly, but there are some restrictions you need to know.

当然,但是有一些限制你需要知道。

First, the ID of the NuGet package should different from the name of the reference project, otherwise, the reference from NuGet will replace the project reference.(For example, TestProjectReferenceForDebug is the name of the project reference, if you want to use project reference and NuGet package at the same time, you could not use this project to create the NuGet package directly, so I created a same project with different name to create the NuGet package "TestNuGetForRelease"):

首先,NuGet包的ID应该与引用项目的名称不同,否则,NuGet的引用将代替项目引用。(例如,TestProjectReferenceForDebug项目引用的名称,如果您想要使用的项目参考和NuGet包在同一时间,你不能直接使用这个项目创建NuGet包,所以我创建了一个相同的项目用不同的名称来创建NuGet包“TestNuGetForRelease”):

enter image description here

Second, you should use Condition attribute in the ItemGroup element, otherwise, there is an ambiguous reference between 'TestProjectReferenceForDebug' and 'TestNuGetForRelease', so we need add the Condition attribute in the ItemGroup element

其次,您应该在ItemGroup元素中使用条件属性,否则,在'TestProjectReferenceForDebug'和'TestNuGetForRelease'之间存在一个不明确的引用,因此我们需要在ItemGroup元素中添加条件属性

  
    
      ..\packages\TestNuGetForRelease.1.0.0\lib\net462\TestNuGetForRelease.dll
      True
    
  
  
     
       {90424b17-2231-4d7d-997b-608115d9f4d9}
       TestProjectReferenceForDebug
     
  

Third, after we add the Condition attribute in the ItemGroup element with debug and release, we could use project reference in Debug and Nuget in Release, however, if we use those namespace in one .cs file at same time, we need to add those two namespace, then you will get an error "The referenced component 'xxx' could not be found". That because VS could not find those two namespace only in the "Release" or "Debug" model:

第三,后添加ItemGroup条件属性的元素与调试和发布,我们可以使用项目在调试和Nuget参考版本,然而,如果我们使用这些名称空间在一个cs文件在同一时间,我们需要添加这两个名称空间,那么您将得到一个错误“引用的组件“xxx”不能被发现”。因为VS只能在“发布”或“调试”模型中找到这两个名称空间:

enter image description here

To resolve this error, we have to annotate the namespace which in another configuration model when you change the configuration model from Debug to Release.

要解决这个错误,我们必须注释另一个配置模型中的命名空间,当您将配置模型从调试更改为发布时。

enter image description here


推荐阅读
  • 探索偶数次幂二项式系数的求和方法及其数学意义 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析
    基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析 ... [详细]
  • 题目:图像处理(HDU1828,计算周长并集,利用线段树与离散化技术进行扫描) ... [详细]
  • 在C#中开发多线程应用程序变得高效且简便,与之前使用VB时的复杂性和局限性形成鲜明对比。C#不仅提供了丰富的多线程编程模型,还简化了线程管理、同步和通信等关键任务,使得开发者能够更加轻松地构建高性能的应用程序。此外,C#的异步编程特性进一步增强了多线程应用的开发效率和可维护性。 ... [详细]
  • 在C#中开发MP3播放器时,我正在考虑如何高效存储元数据以便快速检索。选择合适的数据结构,如字典或数组,对于优化性能至关重要。字典能够提供快速的键值对查找,而数组则在连续存储和遍历方面表现优异。根据具体需求,合理选择数据结构将显著提升应用的响应速度和用户体验。 ... [详细]
  • 在TypeScript中,我定义了一个名为 `Employee` 的接口,其中包含 `id` 和 `name` 属性。为了使这些属性可选为空,可以通过使用 `| null` 或 `| undefined` 来扩展其类型定义。例如,`id: number | null` 表示 `id` 可以是数字或空值。这种类型的灵活性在处理不确定的数据时非常有用,可以提高代码的健壮性和可维护性。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • 在HDU 1166敌军布阵问题中,通过运用线段树数据结构,可以高效地计算指定区间的敌军数量。该算法不仅能够在限定的时间和内存条件下快速求解,还能够灵活应对动态变化的战场局势,为实时决策提供支持。 ... [详细]
  • 本文探讨了基于点集估算图像区域的Alpha形状算法在Python中的应用。通过改进传统的Delaunay三角剖分方法,该算法能够生成更加灵活和精确的形状轮廓,避免了单纯使用Delaunay三角剖分时可能出现的过大三角形问题。这种“模糊Delaunay三角剖分”技术不仅提高了形状的准确性,还增强了对复杂图像区域的适应能力。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • 在2021-2022 ACM集训队月度编程挑战赛第二轮中,题目“最大值与最小值的选择”要求参赛者处理一个包含n个元素的数组,并给定一个整数k。任务是通过选择特定的子数组,计算并返回这些子数组的最大值和最小值之间的差值。该问题考验了选手对数组操作和优化算法的理解与应用能力。 ... [详细]
  • Spring Batch 异常处理与任务限制优化策略 ... [详细]
author-avatar
hello簞調_290
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有