visual studio proyecto para modo este entre diferencia depurar depuracion debug configuracion compilar compilacion clases cambie biblioteca c# visual-studio-2010 dll release-management

c# - para - Visual Studio 2010 Compilación con la versión de Debug o Release de la biblioteca de un tercero, según si mi proyecto está siendo compilado ¿Build or Release?



diferencia entre debug y release visual studio (4)

He descargado varias bibliotecas de terceros (dlls) ahora para Visual Studio 2010 / C # y me he dado cuenta de que en el directorio de distribuciones / bin suelen tener dos versiones Debug and Release.

¿Hay alguna manera de agregar estas bibliotecas como referencias al proyecto, pero usar Release build (cuando estoy construyendo una versión), y usar la compilación Debug (cuando estoy depurando)?


La respuesta de WaffleSouffle es definitivamente la mejor si usa una carpeta Release y una carpeta Debug, como dice la pregunta original.

Parece haber otra opción que no es tan obvia porque VS (VS2010) no la muestra en el IntelliSense al editar el archivo csproj.

Puede agregar la condición al elemento HintPath. Me gusta esto:

<Reference Include="MyLib"> <HintPath Condition="''$(Configuration)''==''Release''">../lib/MyLib.dll</HintPath> <HintPath Condition="''$(Configuration)''==''Debug''">../lib/Debug/MyLib.dll</HintPath> </Reference>

Encontré un artículo de Vivek Rathod que describe el enfoque anterior en http://blog.vivekrathod.com/2013/03/conditionally-referencing-debug-and.html .

Revisé el archivo de esquema XMS para el archivo de proyecto en: C: / Windows / Microsoft.NET / Framework / v4.0.30319 / MSBuild / Microsoft.Build.Core.xsd y: C: / Windows / Microsoft.NET / Framework / v4 .0.30319 / MSBuild / Microsoft.Build.Commontypes.xsd

No puedo ver que la condición es un atributo compatible para el elemento HintPath, pero parece funcionar ...

EDIT 1: Esto no hace que la referencia aparezca dos veces en Visual Studio, que es un problema con la respuesta aceptada.

EDIT 2: en realidad, si omite HintPath, todo junto Visual Studio buscará en la carpeta de salida de proyectos. Entonces puedes hacer esto:

<Reference Include="MyLib"> <!-- // Removed HintPath, VS looks for references in $(OutDir) --> </Reference>


El orden de búsqueda se especifica en el archivo Microsoft.Common.targets
Ver: HintPath vs ReferencePath en Visual Studio


Puede editar el archivo csproj manualmente establezca el atributo Condición en el Grupo de Artículos que contiene la referencia.

<ItemGroup Condition="''$(Configuration)'' == ''Debug''"> <Reference Include="MyLib"> <HintPath>../../Debug/MyLib.dll</HintPath> </Reference> </ItemGroup> <ItemGroup Condition="''$(Configuration)'' == ''Release''"> <Reference Include="MyLib"> <HintPath>../../Release/MyLib.dll</HintPath> </Reference> </ItemGroup>

Vea este artículo para obtener un poco más de información.


Sí, pero probablemente no de forma nativa dentro de VS2010. Puede editar el archivo .csproj y usar los atributos de Condición para crear las referencias a Release o Debug.

<Reference Include="MyLib" Condition=" ''$(Configuration)|$(Platform)'' == ''Debug|AnyCPU'' "> <HintPath>../lib/Debug/MyLib.dll</HintPath> </Reference>

o

<Reference Include="MyLib" Condition=" ''$(Configuration)|$(Platform)'' == ''Release|AnyCPU'' "> <HintPath>../lib/Release/MyLib.dll</HintPath> </Reference>


<Reference Include="MyLib"> <HintPath>../lib/$(Configuration)/MyLib.dll</HintPath> </Reference>