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
“):
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 release
podrí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”:
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.