How do I make one project item, say an XML file, be copied to the output folder when the project is compiled? My code assumes that the file is in the same folder as the compiled executable. I want to avoid having to manually copy that file every time.
VS.NET has this great feature that takes an app.config file in the root of a project and copies it to the output of the project at build-time, renaming the file to
However, as you might be able to tell from the description, this is a bit of a hack. Luckily, in VS.NET 2003, the latest version that supports the .NET Framework 1.1 and available in beta version to MSDN subscribers, C# projects allow you to add your shell commands to the pre-build and post-build events during the project build. Access to the project build event settings are available via Project -> Properties -> Common Properties -> Build Events. Figure 1 shows the copying of an app.manifest file to the output directory based on the project name.
Figure 1: VS.NET 2003 C# project pre-build and post-build event handling
Notice the use of variables in Figure 1:
copy $(ProjectDir)app.manifest $(ProjectDir)$(OutDir)$(ProjectName)$(TargetExt).manifest
You can type these in from memory, or you can press the "..." button to show the event command line editor dialog, as shown in TODO.
Figure 2: Build event command line editor dialog
And as if the event builder dialog wasn't enough, the batch file being executed will be written to the output directory of the project, so you can debug exactly what is being executed if there're any problems.