2010-01-13 20 views
42

Tengo un proyecto en Visual Studio. Necesito desplegar algunos archivos de terceros junto con mi código. Normalmente colocaría estos archivos en un directorio de "Recursos" y establecería la Acción de compilación en cada archivo en "Contenido" y el Directorio de Copiar a salida en "Copiar si es más nuevo".En Visual Studio, ¿cómo puedo configurar la acción de compilación para una carpeta completa?

De todos modos, puedo configurar estas directivas en el nivel de la carpeta. El proyecto actual con el que estoy trabajando tiene docenas de dichos archivos y un par de subcarpetas. Me gustaría poder hacer todo el directorio como "Contenido" y "Copiar si es más nuevo".

Respuesta

45

Cree el proyecto. Agregue un archivo como contenido. Descargue el proyecto y edite el archivo * proj manualmente.

<ItemGroup> 
    <Content Include="myfolder**\*.dll**"> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
    </Content> 
    </ItemGroup> 

Y luego, en el contenido-ItemGroup Me reemplazar ese archivo de la chamusquina con alguna expresión comodín MSBUILD, * .dll, o lo que sea.

+2

Encontré esto útil para compilar mis instrucciones de comodín: http://msdn.microsoft.com/en-us/library/ms171454%28VS.80%29.aspx – brendan

+1

Intenté esto. Funciona, pero cuando agregué un elemento con Visual Studio, eliminó el comodín y cambió todos los elementos individuales a . También probé la sugerencia en http://stackoverflow.com/questions/3320190/visual-studio-how-to-override-the-default-build-action-for-certain-extension-t. pero eso no funcionó en absoluto. – Colin

+2

declaraciones Este comodín trabajan para mí para copiar todos los archivos y subdirectorios: PreserveNewest

7

Si le sucede que tiene la necesidad de establecer el Acción de generación para toda una carpeta de la mejor opción es simplemente abrir el archivo .csproj y utilizar una expresión regular para reemplazar todas las ocurrencias de

<Content .... 

a

<None ... 

que funcionaba perfectamente para me.

+0

esto es de hecho, una mejor solución –

+3

Creo que lo que ha resuelto es un problema diferente. –

+0

Hmmm, pero, ¿no sería más lógico si pudieras configurar esto usando herramientas> opciones en alguna parte?Es bastante molesto que cada nuevo activo que añadas a un proyecto quede excluido por defecto. (¿Por qué iba a agregar un activo si no quería incluirlo en mi compilación final?) – Kokodoko

1

Editar su * .csproj o .vbproj archivo

Añadir esta etiqueta

<ItemGroup> 
    <Folder Include="YOUR_FOLDER_NAME_HERE/"> 
    </ItemGroup 

el archivo final debe tener este aspecto:

<Project> 
<---some more tags---> 
     <ItemGroup> 
     <Folder Include="YOUR_FOLDER_NAME_HERE\" /> 
     </ItemGroup 
<---some more tags---> 
</Project> 
+0

Intenté esto y no funcionó. Quiero agregar una carpeta vacía al proyecto cuando se implementa. Esto no lo hizo. – sr28

4

que utilizar Visual Studio 2012 y puedes pulse Mayús y haga clic para seleccionar varios elementos en el Explorador de soluciones y luego edite la propiedad del Directorio Copiar a todos los elementos de una vez en la ventana Propiedades.

De acuerdo, esto no es equivalente a la solución que está buscando funcionalmente, pero semánticamente sí lo es. Y con suerte, la siguiente persona que tropiece con esta publicación con una carpeta descomunal para remediar (como es conmigo) no tendrá que sumergirse en el archivo .csproj.

Espero que esto ayude!

Cuestiones relacionadas