我的环境是Visual Studio 2017(15.5.5)/ Xamarin for Android。
我想复制和更新"资产"在自动构建之前,来自另一个文件夹的文件(在这种情况下,所有文件位于" ../ crossplat /"文件夹下),因为这些文件正在为其他平台项目共享。
python
(示例项目位于OneDrive)
出于这个原因,我在参考MSDN和StackOverflow的答案时为.csproj文件添加了属性,但当然我的知识不足,而且它不起作用。
\COPYTEST
├─crossplat
│ │ text1.txt
│ │
│ └─sub
│ │
│ └─sub2
│ │
│ └─sub3
│
└─project
│ MainActivity.cs
│ xa.csproj
│ xa.sln
│
├─Assets // !Destination folder
├─Properties
│ AndroidManifest.xml
│ AssemblyInfo.cs
│
└─Resources
│ Resource.Designer.cs
请告诉我执行此程序的适当方法。
答案 0 :(得分:0)
MSBuild(vsproj)设置,用于在构建
之前将所有目标文件复制到指定文件夹
很抱歉迟到的回复,但希望这个答案可以给你一些帮助。
在测试目标后,我发现目标中存在两个错误,纠正后一切都正常。
首先,您应该在项目的最后设置此目标,只需之前结束标记</Project>
,之后> strong>导入:
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
其次,目标中的错误路径。您正在起诉以下脚本以列出目标中的文件:
<ItemGroup>
<CrossFiles Include="..\clossplat\**\*.*" />
</ItemGroup>
但是,我发现你的文件夹名称是 crossplat 而不是 clossplat (&#34; l &#34;而不是&#34;的 - [R 强>&#34)。所以VS / MSBuild将找不到这些文件。
纠正这两个错误后,此目标正常工作:
<Target Name="BeforeBuild">
<ItemGroup>
<CrossFiles Include="..\crossplat\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(CrossFiles)" DestinationFolder="$(ProjectDir)Assets\%(RecursiveDir)" SkipUnchangedFiles="true" />
<ItemGroup>
<Content Include="Assets\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Target>
</Project>
输出: