VS2010如何在项目中包含文件,在构建或发布期间自动复制它们以构建输出目录

Dao*_*Dao 70 msbuild project visual-studio

任务是形成Visual Studio 2010项目,以便在任何构建或发布期间将某些foo.exe实用程序复制到output(bin)目录中.

早期我在.csproj(MSBuild文件)中创建了PostBuildEvent任务:

<PropertyGroup>
  <PostBuildEvent>
    Copy "$(SolutionDir)Tools\foo.exe" "$(ProjectDir)$(OutDir)foo.exe"
  </PostBuildEvent>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

但这不是普遍的.发布期间(Visual Studio 2010)foo.exe出现在bin目录中,但未复制到输出发布目录.也许我做的一切都完全错了,并且有一些标准机制可以将项目中的文件包含在以后,在构建或发布期间,复制到bin

Ode*_*ded 102

有,它不依赖于后期构建事件.

将文件添加到项目中,然后在文件属性中选择"复制到输出目录","始终复制"或"如果更新则复制".

请参阅MSDN.

  • 是否有任何机制来控制输出子目录?我已将`foo.exe`放入`\ Tools\Foo\foo.exe`的解决方案中,并在发布期间将`foo.exe`复制到`bin\Tools\Foo\foo.exe`.第三方代码需要将foo.exe直接放在`bin`文件夹中.我已经为`Tools`和`Foo`目录关闭了`Namespace Provider`属性.但这没有用.我不想将`foo.exe`放到项目根目录.但是,如果没有其他任何变体,我理解这将是唯一的解决方案? (17认同)

Mat*_*att 19

我只需要在构建期间推送文件,所以我只是添加了一个Post-build Event Command Line条目,如下所示:

Copy /Y "$(SolutionDir)Third Party\SomeLibrary\*" "$(TargetDir)"
Run Code Online (Sandbox Code Playgroud)

您可以通过右键单击解决方案资源管理器中的项目,然后单击属性>构建事件来设置此项

  • 如果你使用这种方法,我会建议以下修改:`复制/ Y"$(SolutionDir)第三方\ SomeLibrary\*""$(TargetDir)"` (4认同)

小智 7

在解决方案资源管理器中,请选择要复制到输出目录的文件并分配两个属性: - 构建操作 = 内容 - 复制到输出目录 = 始终复制

这将解决问题。

  • 这仅在项目中引用文件时才有效,而不是通过解决方案资源管理器中的“解决方案项”列表在解决方案中引用。 (10认同)