将文件从一个文件夹复制到根目录

时间:2019-02-10 14:26:17

标签: c# xamarin

我在Xamarin android项目中有2个名为CONFIG1和CONFIG2的文件夹。 每个文件在各自的文件夹中都有一个文件(json文件)。 但是在编译过程中有一项任务会在其中查找那些特定文件(只有一个) 项目的根目录。 因此,对于该解决方案,我想在项目构建期间通过编辑项目文件将文件复制到根目录中。

我尝试使用Copytooutputdirectory和copytopublish目录,但是它们都不起作用。

请帮助。

1 个答案:

答案 0 :(得分:0)

您可以执行预构建任务。我不能说Xamarin项目中预构建任务的可靠性。过去,他们不稳定。也许现在是。

这是Visual Studio 2017中“构建任务”选项卡(项目属性的图片)的图片,其中打开了“编辑发布构建”对话框。基本上,构建前和构建后的步骤在机械上是相同的。它们在操作系统的命令外壳中运行程序。 “语法”只是操作系统的批处理语言。例如,在Windows中,您可能运行一堆xcopy命令来移动内容。

有一个预处理器在运行脚本之前会进行变量替换...这些是“宏”部分中显示的内容...以及它们的当前值。该示例将$(TargetPath)的值传递给update_agent.bat,这是存储在解决方案根目录中的批处理文件。正如我试图在对话框中显示的那样,有很多变量可供选择。

Visual Studio Pre- and Post-Build Dialog

构建前和构建后步骤都有不利之处。他们将在不同的计算机上解决不同的问题...但是,如果您引用解决方案之外的文件,它们可能不在同一位置的每个开发人员的计算机上...并且此步骤将悄然失败。

此外,它们在操作系统之间不可移植。我什至不确定VS是否在Mac OS版本的Visual Studio上提供了构建前和构建后的步骤。

这些缺点是.CSPROJ

支持许多指令的原因

因此,尽管这是一个答案,但除非有人有更好的建议,否则我怀疑这是答案。但是,它可能使您摆脱了眼前的需求。

修改

MsBuild.exe是实际上正在处理.csproj ...的程序,您可以将MsBuild指令直接放入项目中。这些指令可以使用该构建前/构建后对话框中的同一组可替换变量。可能是更好的方法。可能更便携。

<Target Name="CopyFiles">  
    <Copy  
        SourceFiles="@(MySourceFiles)"  
        DestinationFolder="c:\MyProject\Destination"  
    />  
</Target>  

Here's来自MsBuild参考的复制任务。