visual valido tutorial temas studio sirve seleccione que proyecto para linea inicio iconos español elemento configurar como code ajuste abrir visual-studio-2008 msbuild

visual studio 2008 - valido - Copiar al directorio de salida copia la estructura de la carpeta, pero solo desea copiar archivos



temas para visual studio code (8)

Agregue lo siguiente a su archivo .csproj / .vbproj

<Target Name="AfterBuild"> <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(RootContent)" SkipUnchangedFiles="true" /> </Target>

A continuación, cambie la Acción de compilación de los archivos que desee en la carpeta raíz a RootContent.

Tengo un VS2008 Quiero copiar ciertos archivos de un directorio en mi carpeta /bin/ . Configuré los archivos (ubicados en /common/browserhawk/ ) en "Copiar al directorio de salida". Sin embargo, también copia la estructura de la carpeta: los archivos se copian a /bin/common/browserhawk/

¿Cómo puedo obtener estos archivos para copiar a solo /bin/ ? No quiero almacenarlos en la raíz del sitio web para que se copien correctamente.

Pregunta relacionada: Visual Studio agrega .dll y .pdb para proyectar después de compilar


Como no puedo comentar las respuestas anteriores, ubicaré la solución aquí:

Agregando lo que @PaulAlexander proporcionó, agregue lo siguiente a su archivo .csproj / .vbproj:

<ItemGroup> <AvailableItemName Include="RootContent"> <Visible>false</Visible> </AvailableItemName> </ItemGroup> <Target Name="AfterBuild"> <Copy DestinationFolder="$(OutputPath)" SourceFiles="@(RootContent)" SkipUnchangedFiles="true" /> </Target>

Esto le permite seleccionar "RootContent" como la Acción de compilación en la ventana Propiedades, y se puede acceder a todos a través de la GUI. Una explicación más completa: la opción "AvailableItemName" básicamente crea una nueva lista de nombres a la que puede asignar elementos en el proyecto en la propiedad "Crear acción" en la ventana Propiedades. A continuación, puede utilizar esta lista recién creada en cualquier destino que desee (por ejemplo, a través de "@ (RootContent)").


Creo que el comando XCOPY maneja mejor los directorios y los archivos. Por lo tanto,

XCOPY "$(ProjectDir)common/browserhawk" "$(TargetDir)" /E /I /F /Y

Que permite crear carpetas fuera del directorio de destino.

XCOPY "$(ProjectDir)Templates" "$(TargetDir)" /E /I /F /Y

La estructura del archivo / carpeta del Proyecto de:

A:/TEMP/CONSOLEAPPLICATION3/TEMPLATES ├───NewFolder1 ├───NewFolder2 │ TextFile1.txt │ TextFile2.txt └───NewFolder3 TextFile1.txt TextFile2.txt TextFile3.txt

Se convierte en:

A:/TEMP/CONSOLEAPPLICATION3/BIN/DEBUG │ ConsoleApplication3.exe │ ConsoleApplication3.pdb │ ConsoleApplication3.vshost.exe │ ConsoleApplication3.vshost.exe.manifest ├───NewFolder1 ├───NewFolder2 │ TextFile1.txt │ TextFile2.txt │ └───NewFolder3 TextFile1.txt TextFile2.txt TextFile3.txt


Lo he usado en VS2010 y VS2015. Yo prefiero esta solución porque:

  1. El XML es reutilizable en cualquier proyecto
  2. El "RootContent" se elige como una acción de compilación en la interfaz de usuario de Visual Studio, al igual que cualquier otro "contenido"
  3. El "CopyToOutputDirectory" se obedece, tal como se esperaría
  4. RootContent se agrega a la salida del proyecto: se lleva a cabo a través de Project-References, obedece a "Clean", etc.
  5. RootContent se puede especificar con un comodín, conservando la estructura de la carpeta recursiva:

    <RootContent Include="common/browserhawk/**"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </RootContent>

Hacia el comienzo del archivo de proyecto:

<ItemGroup> <AvailableItemName Include="RootContent"> <!-- Add "RootContent" as a choice in the "Build Action" dropdown. --> <Visible>False</Visible> </AvailableItemName> </ItemGroup>

Prestado de esta respuesta

Después de la importación de Microsoft .targets:

<PropertyGroup> <AssignTargetPathsDependsOn> $(AssignTargetPathsDependsOn); IncludeRootContentAsContent; </AssignTargetPathsDependsOn> </PropertyGroup> <Target Name="IncludeRootContentAsContent"> <CreateItem Include="@(RootContent)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(Extension)"> <Output ItemName="ContentWithTargetPath" TaskParameter="Include" /> </CreateItem> </Target>

Prestado de esta respuesta


Puede agregar un evento de publicación posterior para copiar los archivos.
Vaya a las propiedades del proyecto, la ficha Crear eventos y añada lo siguiente a la línea de comandos del evento Post-build:

copy "$(ProjectDir)/common/browserhawk/*.*" "$(TargetDir)"

Asegúrese de incluir las comillas si la ruta del proyecto tiene espacios.


Puede crear un archivo por lotes para copiar los archivos y ejecutarlo como un evento posterior a la construcción.


Si edita .csproj / .vbproj en un editor de texto, puede controlar dónde se ubica el archivo en el directorio de salida y también qué nombre tendrá el archivo en el directorio de salida. Por ejemplo:

<None Include="content/someContent.txt"> <Link>someContentInOutputDirectory.txt</Link> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None>

Esto colocará el content/someContent.txt del archivo content/someContent.txt en bin/someContentInOutputDirectory.txt . También puede elegir un subdirectorio en el bin si lo desea; simplemente agrégalo al elemento Enlace.


Terminé agregando un paso al archivo de compilación nant para copiar después de una compilación exitosa

<target name="action.copy.browserhawk.config" depends="compile.source"> <copy todir="${App.Web.dir}/bin/" includeemptydirs="false"> <fileset basedir="${browserhawk.config.dir}"> <include name="bhawk_bb.dat" /> <include name="bhawk_sp.dat" /> <include name="browserhawk.properties" /> <include name="maindefs.bdd" /> <include name="maindefs.bdf" /> <include name="BH_PRO.lic" /> </fileset> </copy> <echo message="COPY BROWSERHAWK CONFIG: SUCCESS ${datetime::now()}" /> </target>