Syn*_*ech 36 visual-studio-2003 projects-and-solutions build visual-studio
当我构建Visual Studio项目时,可执行文件将写入项目属性页中指定的输出目录.
我有一个项目,其中包含程序使用的一些额外文件(例如,.ini
文件).
如何配置项目以将文件复制到输出目录,以便在程序运行时,它的CWD中有另一个文件的副本?
我检查了文件的属性页,除了从构建中排除它(禁用)的选项之外没有任何其他用处,并且custom-build-tool命令为空(加上它是一个纯文本文件,不需要任何处理).
Dmi*_*lov 37
要将文件复制到Visual Studio 2003中的输出目录,可以使用Post-Build事件:
将Post-Build事件命令行设置为:
xcopy /y $(ProjectDir)my_file.ini $(ProjectDir)$(OutDir)
Run Code Online (Sandbox Code Playgroud)好的,建立!
Dmi*_*lov 27
请尝试在解决方案资源管理器中选择文件 然后,您应该能够在"属性"窗口中看到其属性(F4如果它不可见则按下).你会发现有两个属性:
将"构建操作"设置为"内容",然后 - 为"复制到输出目录"设置选择适当的值.
带有"Build Action"和"Copy to Output Directory"设置的文件属性窗口
如果上述方法不适合您,请阅读此文章" 使用.inf文件复制到输出目录问题 ".然后看看这个" Visual Studio:非默认文件类型的默认构建操作 "
希望有所帮助
对于 VS 2017,Dmitry Pavlov 发布的命令如下:
xcopy /y "$(ProjectDir)my_file.ini" "$(OutDir)"
Run Code Online (Sandbox Code Playgroud)
如果项目目录的路径中有空格,引号很重要。
当我在文件的“属性页”中搜索构建动作字段时,我有一个想法:设置自定义构建步骤来复制文件(手动)。事实证明,这比我想象的要容易。我想这将需要使用cmd
或其他外部可执行文件(xcopy
,robocopy
等等),但是这是没有必要的。
我将“定制构建步骤”设置如下:
Command Line : copy $(InputFileName) $(OutDir)
Description : Copying foobar...
Outputs : $(InputFileName)
Run Code Online (Sandbox Code Playgroud)
设置输出字段(正确)是至关重要的,这是为了防止VS始终认为项目已过时且需要重新构建(我不确定是否需要在前缀$(OutDir)\
)。
它反映在“输出”窗口中,如下所示:
Copying foobar...
1 file(s) copied.
Compiling resources...
Linking...
Run Code Online (Sandbox Code Playgroud)
扩展 Synetech 的答案。
在 VS2019 中,在解决方案资源管理器中右键单击要复制的文件,然后选择“属性”。然后在“常规>>项目类型”下更改为“复制文件”,然后单击“应用”。
您现在应该在“目的地”等的“属性”页面中具有 UI 字段。