我在Xamarin android项目中有2个名为CONFIG1和CONFIG2的文件夹。 每个文件在各自的文件夹中都有一个文件(json文件)。 但是在编译过程中有一项任务会在其中查找那些特定文件(只有一个) 项目的根目录。 因此,对于该解决方案,我想在项目构建期间通过编辑项目文件将文件复制到根目录中。
我尝试使用Copytooutputdirectory和copytopublish目录,但是它们都不起作用。
请帮助。
答案 0 :(得分:0)
您可以执行预构建任务。我不能说Xamarin项目中预构建任务的可靠性。过去,他们不稳定。也许现在是。
这是Visual Studio 2017中“构建任务”选项卡(项目属性的图片)的图片,其中打开了“编辑发布构建”对话框。基本上,构建前和构建后的步骤在机械上是相同的。它们在操作系统的命令外壳中运行程序。 “语法”只是操作系统的批处理语言。例如,在Windows中,您可能运行一堆xcopy
命令来移动内容。
有一个预处理器在运行脚本之前会进行变量替换...这些是“宏”部分中显示的内容...以及它们的当前值。该示例将$(TargetPath)
的值传递给update_agent.bat,这是存储在解决方案根目录中的批处理文件。正如我试图在对话框中显示的那样,有很多变量可供选择。
构建前和构建后步骤都有不利之处。他们将在不同的计算机上解决不同的问题...但是,如果您引用解决方案之外的文件,它们可能不在同一位置的每个开发人员的计算机上...并且此步骤将悄然失败。
此外,它们在操作系统之间不可移植。我什至不确定VS是否在Mac OS版本的Visual Studio上提供了构建前和构建后的步骤。
这些缺点是.CSPROJ
因此,尽管这是一个答案,但除非有人有更好的建议,否则我怀疑这是答案。但是,它可能使您摆脱了眼前的需求。
修改
MsBuild.exe是实际上正在处理.csproj ...的程序,您可以将MsBuild指令直接放入项目中。这些指令可以使用该构建前/构建后对话框中的同一组可替换变量。可能是更好的方法。可能更便携。
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="c:\MyProject\Destination"
/>
</Target>
Here's来自MsBuild参考的复制任务。