c# - samples - Visual Studio: ¿Cómo "copiar al directorio de salida" sin copiar la estructura de la carpeta?
visual basic net samples (5)
Tengo algunos archivos dll en la carpeta / lib de la carpeta de mi proyecto. En la página de propiedades de dll, he seleccionado "Crear acción" como "Contenido" y "Copiar al directorio de salida" como "Copiar siempre".
Después de la compilación, en realidad obtengo el dll copiado pero están dentro de / bin / Release / lib y no en / bin / Release.
¿Hay alguna manera de copiar archivos dll a / bin / Release (y no a / bin / Release / lib) sin escribir un script post-build o recurriendo a nant, etc.?
Agregue los archivos dll como referencia al proyecto y en el conjunto de referencia "Copiar local" a verdadero.
Guárdelos en $(ProjectDir)/Lib
, pero agregue esos archivos " Como un enlace " a la raíz de su .csproj. Ahora se copiarán en bin / Debug (o en cualquier otra carpeta de salida) sin estar en lib.
EDITAR: Esta respuesta se escribió mucho cuando ContentWithTargetPath no estaba disponible en las versiones de VS / MSBuild que estaba usando. Dejando aquí esta respuesta para las personas que puedan tener que usar una versión anterior de VS. Por favor, deja de comentar sobre esto, todos sabemos que hay mejores formas ahora.
Parece en VisualStudio 2015 que si los dlls que está ''agregando con un enlace'' están en una subcarpeta del mismo proyecto , se colocarán automáticamente una carpeta y el resultado también se colocará en una carpeta como la que vio.
Si los dlls están en otro proyecto o directorio en el disco que no está en una subcarpeta del proyecto , puede ''Agregar con un enlace'', y se colocarán en el directorio raíz muy bien.
Tuve el mismo problema con Visual Studio 2010 / C # Project.
Para ensambles (es decir, que tengan la interfaz .NET), use la carpeta "Referencias" en su proyecto en el Explorador de soluciones. Haga clic derecho, elija "Agregar elemento existente" y busque su ensamblaje .dll.
Los archivos .dll comunes pueden colocarse en una subcarpeta (como se mencionó anteriormente en "/ lib") y en las propiedades seleccionar:
- Build Action = "HelpFiles"
- Copiar a OutputDirectory = "Si es nuevo"
Esto funcionó para mí exactamente como se desea: durante la compilación, los .DLL se copian en el directorio de salida sin la subcarpeta "/ lib".
en lugar de <Content>
use <ContentWithTargetPath>
y especifique la ruta de destino, como esta:
<ContentWithTargetPath Include="lib/some_file.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<TargetPath>some_file.dat</TargetPath>
</ContentWithTargetPath>
Tenga en cuenta que esta entrada puede no ser visible desde Visual Studio (2012, 2015, 2017), pero una vez que se agrega manualmente al csproj, aparecerá en Visual Studio. Sin embargo, la ruta de destino no será editable a través de la IU.