构建后MsBuild复制文件

时间:2012-09-12 09:01:35

标签: .net visual-studio-2010 build msbuild csproj

我想在构建项目后将xml文件从主目录复制到bin\Debug,但我的解决方案不起作用。我编辑了.csproj文件并添加了:

<Target Name="AfterBuild">
     <Copy SourceFiles="Controllers.xml" DestinationFolder="\bin\Debug" ContinueOnError="true" />
</Target>

我做错了什么?构建成功。

3 个答案:

答案 0 :(得分:39)

您的目标文件夹(很可能)是错误的。如果您使用前导反斜杠指定它,它实际上只是<current-drive-letter>\bin\Debug的缩写(使其实际上成为绝对路径,如C:\bin\Debug)。

使用bin\Debug,或者更好地使用OutputPath变量,该变量设置为bin\Debugbin\Release,具体取决于您的构建配置。

示例:

<Target Name="AfterBuild">
     <Copy SourceFiles="Controllers.xml" DestinationFolder="$(OutputPath)" ContinueOnError="true" />
</Target>

答案 1 :(得分:5)

项目中的xml文件是什么?  然后它的一个属性是CopyToOutputDirectory。将其设置为CopyAlways,当项目构建时,文件将被复制到bin \ debug。

答案 2 :(得分:1)

您必须指定完整路径。我怀疑MsBuild复制任务是从Visual Studio的“默认路径”运行,并且找不到该文件。此外,您很可能希望该文件最终位于构建目标目录中。

<Target Name="AfterBuild">
    <Copy SourceFiles="$(ProjectDir)Controllers.xml" DestinationFolder="$(TargetDir)" ContinueOnError="true" />
</Target>