color - ¿Hay alguna manera de especificar referencias de ensamblado basadas en la configuración de compilación en Visual Studio?
visual studio code format code (2)
Tengo un proyecto que agrega cierta extensibilidad a otra aplicación a través de su API. Sin embargo, quiero poder utilizar el mismo proyecto para múltiples versiones de su aplicación, porque la mayoría del código es el mismo.
Sin embargo, cada versión de la aplicación requiere una referencia al ensamblaje apropiado para esa versión del software. Cargan sus ensamblajes en el GAC, por lo que incluso si pudiera especificar la versión del ensamblaje a usar en función de la configuración de compilación, estaría bien. ¿Hay alguna manera de hacer esto desde dentro de VS o necesito una herramienta de compilación externa?
Hay una forma de hacerlo, pero tendrá que editar manualmente sus archivos de proyecto. Los archivos de proyecto pueden tener un atributo de Condition
aplicado a ellos en muchos de los elementos, incluido el de referencias.
Puede agregarlos a sus referencias para especificar cuándo se debe usar la referencia:
<Reference Include="Product, Version=1.0.0.0" Condition="''$(Configuration)''==''V1''">
</Reference>
<Reference Include="Product, Version=2.0.0.0" Condition="''$(Configuration)''==''V2''">
</Reference>
<Reference Include="Product, Version=3.0.0.0" Condition="''$(Configuration)''==''V3''">
</Reference>
A continuación, define varias configuraciones de compilación ( V1
, V2
, V3
) y cada referencia se incluirá solo en la configuración de compilación elegida pertinente.
Combine esto con símbolos de compilación condicionales y sentencias #if
en su código y podrá hacer lo que quiera.
Algo que debe tener cuidado si hace esto es que es fácil que Visual Studio elimine los atributos condicionales del archivo del proyecto.
<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>../SharedLibs/log4net/$(Platform)/$(Configuration)/log4net.dll</HintPath>
</Reference>
Puede reemplazar la ruta de sugerencia con las propiedades:
$ (Configuración) es equivalente a Release / Debug o cualquier otra configuración que tengas. $ (Platform) es equivalente a x86 / x64 / Any CPU
Si su configuración incluye Any CPU, tendrá que poner comillas simples alrededor de $ (Configuración)
Consulte también las opciones de condición a las que hacen referencia adrianbanks