visual studio net descargar community caracteristicas c# .net visual-studio build

c# - net - visual studio community



Cómo usar diferentes archivos en un proyecto para diferentes configuraciones de compilación-Visual Studio C#.net (4)

En MSBuild, puede especificar condiciones para grupos de elementos. A continuación, puede vincular esas condiciones al dispositivo de destino.

Ejemplo:

<!-- Declare the condition property at the beggining of the build file --> <PropertyGroup Condition="$(Platform) == ''IE7''"> <UseNewLibrary>true</UseNewLibrary> </PropertyGroup> <PropertyGroup Condition="$(Platform) == ''IE6''"> <UseNewLibrary>false</UseNewLibrary> </PropertyGroup> <!-- Then those the property to select the right file --> <ItemGroup Condition="$(UseNewLibrary)==true"> <Compile Include="Class1.cs"/> <Compile Include="Class2.cs"/> <Compile Include="Class3.cs"/> <Compile Include="Class4.cs"/> </ItemGroup> <ItemGroup Condition="$(UseNewLibrary)==false"> <Compile Include="Class1Old.cs"/> <Compile Include="Class2Old.cs"/> <Compile Include="Class3Old.cs"/> <Compile Include="Class4Old.cs"/> </ItemGroup> <!-- And now references --> <ItemGroup Condition="$(UseNewLibrary)==true"> <Reference Include="MyAssembly, Version=1.1.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </ItemGroup> <ItemGroup Condition="$(UseNewLibrary)==false"> <Reference Include="MyAssembly, Version=1.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </ItemGroup>

Tenga en cuenta que todos los archivos aparecerán en el IDE, pero en el momento de la compilación, todo debe alinearse correctamente.

Entonces, todo lo que necesita hacer es crear sus plataformas (IE6 e IE7) en la gestión de la configuración.

También puede usar directamente la propiedad de plataforma en lugar de crear una propiedad intermedia.

Tengo la solución de soluciones de CA # .net y quiero crear dos compilaciones diferentes: una que admita IE6 y otra que admita IE7. Algunos de los archivos en uno de mis proyectos son diferentes para la versión de IE6 versus la de IE7, por lo que quiero incluir los archivos de IE6 cuando construyo para IE6 y los archivos de IE7 cuando construyo para IE7. ¿Cuál es la mejor manera de estructurar mi solución para esta situación?

Debido a otras restricciones, no quiero crear un ensamblaje separado que contenga los elementos compartidos; Quiero que el proyecto se compile en un único ensamblado ''foo.dll'', independientemente de la compilación que esté realizando.

Pensé que podría simplemente crear dos proyectos separados que compilan a ''foo.dll'', luego crear dos Configuraciones de versión y solo incluir el proyecto relevante en la configuración relevante. Sin embargo, necesitaría incluir los archivos que son iguales para IE6 e IE7 en ambos proyectos, y no puedo ver cómo usar una sola copia de un archivo en dos proyectos (cuando agrego un elemento existente, crea una copia en el directorio del proyecto). Estoy usando SVN para control de fuente así que tal vez podría usar eso para hacer ''compartir'' entre carpetas, pero dudo que sea la mejor manera ...

NB: Se necesitan compilaciones diferentes debido a las diferencias de API en IE, cuyos detalles no son relevantes para la pregunta, solo créanme que hay dos compilaciones requeridas.


No estoy seguro de cómo hacer lo que me está preguntando, pero ¿no podría simplemente incluir ambas versiones de su contenedor de API en el dll y determinar a cuál llamar en tiempo de ejecución? Por ejemplo, ¿qué pasa si un usuario instala la versión IE6 de su aplicación y luego se actualiza a IE7? Tendrán que volver a instalar, ¿verdad?

Me parece que esto sería una solución mucho más simple, pero tal vez me falta algo ...


Para agregar el mismo archivo en dos o más proyectos, puede

Haga clic derecho en el proyecto y elija Agregar >> Artículo existente
Elija el archivo en el selector de archivos
Haga clic en el pequeño triángulo en el lado derecho del botón Agregar en el selector de archivos
Elija Agregar como enlace

Esto agregará el archivo al proyecto sin hacer una copia del mismo.

No conozco todos los detalles de su situación, pero su solución suena incómoda. Dos versiones de la misma DLL probablemente conduzcan a problemas de configuración en las computadoras cliente eventualmente. Los animo a que consideren la idea de Kevin de tener un dll único con todas las capacidades, y que llamen al código apropiado según sea necesario.


Suponiendo que está utilizando VS2005 o superior, puede usar la propiedad Condition en el archivo de proyecto.

Deberá editar el archivo csproj directamente

  1. Descargar proyecto
  2. Editar

luego en los archivos que desea incluir condicionalmente

<Compile Include="IE6.cs" Condition=" ''$(Platform)'' == ''IE6'' " /> <Compile Include="IE7.cs" Condition=" ''$(Platform)'' == ''IE7'' " /> <Compile Include="IE.cs" />