当我建置Visual Studio项目时,可可执行会写入项目属性页中指定的输出目录。
我有一个项目,其中包含一些程序使用的额外文件(例如,.ini
文件)。
如何配置项目将文件复制到输出目录,以便在程序运行时,在其CWD中有另一个文件的副本?
我检查了该文件的属性页,除了一个将其从构建中排除的选项(已禁用)外,没有任何有用的内容,并且custom-build-tool命令为空(加上它是一个不需要任何处理的纯文本文件)。
当我建置Visual Studio项目时,可可执行会写入项目属性页中指定的输出目录。
我有一个项目,其中包含一些程序使用的额外文件(例如,.ini
文件)。
如何配置项目将文件复制到输出目录,以便在程序运行时,在其CWD中有另一个文件的副本?
我检查了该文件的属性页,除了一个将其从构建中排除的选项(已禁用)外,没有任何有用的内容,并且custom-build-tool命令为空(加上它是一个不需要任何处理的纯文本文件)。
9条答案
按热度按时间nhaq1z211#
若要将档案复制到Visual Studio 2003中的输出目录,您可以使用建置葬礼件:
1.右键单击项目-〉属性
1.通用属性-〉生成事件
1.将后期生成事件命令行设置为:
lymnna712#
请尝试在解决方案资源管理器中选择该文件。然后,您应该能够在“属性”窗口中看到它的属性(如果看不到,请按F4)。您将看到两个属性:
将“生成操作”设置为“内容,”然后为“复制到输出目录”设置选择适当的值。
具有“生成操作”和“复制到输出目录”设置的文件属性窗口
如果上面的方法对你不起作用,请阅读这篇文章“Copy to output directory issue with .inf file“。然后看看这篇文章“Visual Studio: default build action for non-default file-types“
x6h2sr283#
当我在文件的属性页中搜索build-action字段时,我有了一个想法:将自定义构建步骤设置为 copy 文件(手动)。这比我想象的要容易。我曾认为这需要使用
cmd
或其他外部可执行文件(xcopy
,robocopy
等),但这不是必需的。我将“自定义生成步骤”设置如下:
设置输出字段(正确)是至关重要的,以防止VS总是认为项目是过时的,需要重建(我不确定是否需要用
$(OutDir)\
作为前缀)。它在“输出”窗口中的反映如下:
kpbpu0084#
对于VS 2017,德米特里·巴甫洛夫发布的命令如下:
如果项目目录的路径中有空格,则引号很重要。
apeeds0o5#
详述Synetech的解决方案。
在VS2019中,在解决方案资源管理器中右键单击要复制的文件,然后选择属性。然后在常规〉〉项目类型下更改为复制文件,然后点击应用。
现在,“属性”页中应该有目标等的UI字段。
7kqas0il6#
如果这对任何人都有帮助,我需要将我正在构建的项目的输出dll复制到另一个项目中。
bsxbgnwa7#
您需要额外的$(OutDir)。否则,在重建/清理步骤中,它将丢弃您的源代码。
vhipe2zx8#
改进Synetech的答案:
在VS 2013 C++项目命令行中:复制%(Identity)$(OutDir)描述:正在复制foobar...输出:%(Identity)它可以工作,但它会导致循环依赖,也就是说,它将在每次您要求增量构建时执行,没有任何计量器已经复制。
若要解决此问题,您可以将该项添加到目标文件夹,将路径更改为$(OutDir),然后将第一个添加项中该项用作Output。缺点-解决方案中存在两个名称相似的项。
在后期生成中也使用带有/d /y参数完整xcopy-仅当目标文件日期较早时才复制
vuv7lop39#
您也可以在卸载项目后(右键单击项目〉〉卸载项目)在现有的
<ItemGroup>
标记中添加以下内容:在这种情况下,它将从2个文件夹中获取db.config文件,并在创建一个包含db.config文件的Config文件夹后将其放入输出文件夹(默认情况下为bin/Debug