Saltar al contenido

Use la referencia del proyecto en Debug y Nuget en Release

Esta es el arreglo más acertada que encomtrarás aportar, pero primero obsérvala detenidamente y analiza si se puede adaptar a tu proyecto.

Solución:

Una forma es editar manualmente el archivo csproj. Si actualmente ha hecho referencia al paquete NuGet, tendrá una parte en el archivo csproj como esta:

....

  
    ..packageslog4net.2.0.8libnet45-fulllog4net.dll
    True
  
  
  
  
  
  
  
  

....

En este ejemplo, se utiliza log4net. Para su paquete NuGet, el público key el token, la versión, etc. es diferente. No puedes cambiarlo a:

  
    
      Debuglog4net.dll
      True
    
  
  
    
      ..packageslog4net.2.0.8libnet45-fulllog4net.dll
      True
    
  

los Condition attribute en el ItemGroup El elemento está haciendo el trabajo entre la depuración y el lanzamiento.

¿Es posible hacer una referencia de proyecto al proyecto Nuget (B) desde la Solución (A) al construir Debug? ¿Y al construir Release usa el paquete Nuget de Source?

Ciertamente, pero hay algunas restricciones que debe conocer.

Primeroel ID del paquete NuGet debe ser diferente del nombre del proyecto de referencia; de lo contrario, la referencia de NuGet reemplazará la referencia del proyecto. (Por ejemplo, TestProjectReferenceForDebug es el nombre de la referencia del proyecto, si desea usar la referencia del proyecto y el paquete NuGet al mismo tiempo, no podría usar este proyecto para crear el paquete NuGet directamente, así que creé un mismo proyecto con un nombre diferente para crear el paquete NuGet “TestNuGetForRelease“):

ingrese la descripción de la imagen aquí

SegundoDeberías usar Condition attribute en el ItemGroup elemento, de lo contrario, hay una referencia ambigua entre ‘TestProjectReferenceForDebug‘ y ‘TestNuGetForRelease‘, así que necesitamos añade el Condition attribute en el ItemGroup elemento

  
    
      ..packagesTestNuGetForRelease.1.0.0libnet462TestNuGetForRelease.dll
      True
    
  
  
     
       90424b17-2231-4d7d-997b-608115d9f4d9
       TestProjectReferenceForDebug
     
  

Terceradespués de agregar el Condition attribute en el ItemGroup elemento con debug y releasepodríamos usar la referencia del proyecto en Debug y Nuget en Release, sin embargo, si usamos esos espacios de nombres en un archivo .cs al mismo tiempo, necesitamos agregar esos dos espacios de nombres, luego obtendrá un error “No se pudo encontrar el componente al que se hace referencia ‘xxx'”. Eso porque VS no pudo encontrar esos dos espacios de nombres solo en el modelo “Lanzamiento” o “Depuración”:

ingrese la descripción de la imagen aquí

Para resolver este errortenemos que anotar el espacio de nombres que en otro modelo de configuración cuando cambia el modelo de configuración de Depurar a Liberar.

ingrese la descripción de la imagen aquí

valoraciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *