If I have some files I want to copy from my project into the .\bin\debug\
folder on compilation, then it seems I have to put them into the root of the project. Putting them into a subfolder seems to copy them into the .\bin\debug\
folder in the same structure they're stored in.
Is there any way to avoid this?
Just to be clear: if I have a MyFirstConfigFile.txt
and MySecondConfigFile.txt
in a ConfigFiles
folder and I set their Copy to Output to be Copy..., then they appear in the .\bin\debug\ConfigFiles\
folder. I want them to appear in the .\bin\debug\
folder.
I found this question searching for "copy files into the application folder at compile time". OP seems to have this sorted already, but if you don't:
In Visual Studio right-click the file, select properties, then change the option 'copy to output' to 'always'. See http://msdn.microsoft.com/en-us/library/0c6xyb66.aspx
You can also put the files or links into the root of the solution explorer and then set the files properties:
Build action = Content
and
Copy to Output Directory = Copy if newer
(for example)For a link drag the file from the windows explorer into the solution explorer holding down the shift and control keys.
copy from subfolder to subfolder
You can use the PostBuild event of the project. After the build is completed, you can run a DOS batch file and copy the desired files to your desired folder.
You can use a MSBuild task on your csproj, like that.
Edit your csproj file
You could do this with a post build event. Set the files to no action on compile, then in the macro copy the files to the directory you want.
Here's a post build Macro that I think will work by copying all files in a directory called Configuration to the root build folder: