在编译时将文件复制到应用程序文件夹中

时间:2009-04-14 14:43:19

标签: c# visual-studio

如果我想将一些文件从我的项目复制到编译的.\bin\debug\文件夹中,那么我似乎必须将它们放入项目的根目录中。将它们放入子文件夹似乎将它们复制到与它们存储在同一结构中的.\bin\debug\文件夹中。

有什么方法可以避免这种情况吗?

请注意:如果我在MyFirstConfigFile.txt文件夹中有MySecondConfigFile.txtConfigFiles,我将复制到输出设置为复制... ,然后它们出现在.\bin\debug\ConfigFiles\文件夹中。我希望它们出现在.\bin\debug\文件夹中。

8 个答案:

答案 0 :(得分:77)

您可以使用post build事件执行此操作。在编译时将文件设置为无操作,然后在宏中将文件复制到所需的目录。

这是一个post build Macro,我认为它可以通过将名为Configuration的目录中的所有文件复制到根构建文件夹来实现:

copy $(ProjectDir)Configuration\* $(ProjectDir)$(OutDir)

答案 1 :(得分:46)

你可以在你的csproj上使用MSBuild任务。

编辑csproj文件

  <Target Name="AfterBuild">
    <Copy SourceFiles="$(OutputPath)yourfiles" DestinationFolder="$(YourVariable)" ContinueOnError="true" />
  </Target>

答案 2 :(得分:30)

您还可以将文件或链接放入解决方案资源管理器的根目录,然后设置文件属性:

Build action = Content

Copy to Output Directory = Copy if newer(例如)

对于链接,将文件从Windows资源管理器拖到解决方案资源管理器中,按住shift和控制键。

enter image description here

答案 3 :(得分:1)

您想在项目中使用Post-Build事件。您可以在那里指定输出,并且有常用项目的宏值,如项目路径,项目名称等。

答案 4 :(得分:0)

您可以使用项目的PostBuild事件。构建完成后,您可以运行DOS批处理文件并将所需的文件复制到所需的文件夹。

答案 5 :(得分:0)

我发现这个问题正在搜索“在编译时将文件复制到应用程序文件夹中”。 OP似乎已经排序了,但如果你没有:

在Visual Studio中,右键单击该文件,选择属性,然后将“复制到输出”选项更改为“始终”。见http://msdn.microsoft.com/en-us/library/0c6xyb66.aspx

答案 6 :(得分:0)

从子文件夹复制到子文件夹

 if not exist "$(ProjectDir)$(OutDir)subfolder" mkdir "$(ProjectDir)$(OutDir)subfolder"

 copy "$(ProjectDir)subfolder\"  "$(ProjectDir)$(OutDir)subfolder\"

答案 7 :(得分:0)

我个人更喜欢这种方式。

修改.csproj以添加

<ItemGroup>
    <ContentWithTargetPath Include="ConfigFiles\MyFirstConfigFile.txt">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <TargetPath>%(Filename)%(Extension)</TargetPath>
    </ContentWithTargetPath>
</ItemGroup>