Automatic copy files to output during application building

后端 未结 8 1780
死守一世寂寞
死守一世寂寞 2020-12-07 22:48

There is Copy to Output Directory property for files in C# projects. But in VC++ projects it is absent. I know, that I can use Build events in VC++ and wri

相关标签:
8条回答
  • 2020-12-07 23:15

    It depends on what version of Visual Studio you are using. Format of VC++ project file in Visual Studio 2008 is not MSBuild and so using xcopy in PostBuildStep is a good choice.

    VC++ project in Visual Studio 2010 has MSBuild format. Thus, there is functionality of MSBuild Copy task.

    Below is a sample:

    <Copy
        SourceFiles="%(FullPath)"
        DestinationFolder="$(OutDir)"
    />
    

    If the destination directory does not exist, it is created automatically

    An MSDN Copy task reference is here

    0 讨论(0)
  • 2020-12-07 23:17

    Can MSBuild do something to help in this case?

    Using MSVC 2012, this worked for me:

    Assumed you have a file "Data/ThisIsData.txt" in your c++ Project.

    Unload the project (right click --> Unload Project).
    Edit project XML (right click --> Edit .vcxproj)
    Now you see the projects MSBuild file as XML in your editor.

    Find "ThisIsData.txt". It should look something like:

    <ItemGroup>
    <None Include="Data\ThisIsData.txt" />
    ...
    </ItemGroup>
    

    Now add an other item group like this:

    <ItemGroup>
    <Content Include="Data\ThisIsData.txt">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    ...
    </ItemGroup>
    

    Reload the project and build.
    Your file "ThisIsData.txt" should get copied to $(OutDir)\Data\ThisIsData.txt.

    Why duplicating the ItemGroup?

    Well if you simply change the None include to a content include, the IDE does not seem to like it any more, and will not display it. So to keep a quick edit option for my data files, I decided to keep the duplicated entries.

    0 讨论(0)
提交回复
热议问题