C# 如何像VisualStudio一样将单拷贝数据文件复制到子目录中
我有一个C#项目,它引用了一个共享项目。共享项目包含许多我希望复制到文件夹中的数据,例如C# 如何像VisualStudio一样将单拷贝数据文件复制到子目录中,c#,xamarin,mono,xamarin-studio,xamarin.mac,C#,Xamarin,Mono,Xamarin Studio,Xamarin.mac,我有一个C#项目,它引用了一个共享项目。共享项目包含许多我希望复制到文件夹中的数据,例如 Data/file1.txt 当使用visual studio构建时,所有文件都会移动到带有子文件夹的输出目录,例如 bin/Release/Data/file1.txt 但是在mono上,它忽略了子目录,例如 bin/Release/file1.txt 如何在构建期间强制mono保持相同的目录结构 作为更新,在构建期间,我还看到以下内容: Target _CopyDeployFilesToOutpu
Data/file1.txt
当使用visual studio构建时,所有文件都会移动到带有子文件夹的输出目录,例如
bin/Release/Data/file1.txt
但是在mono上,它忽略了子目录,例如
bin/Release/file1.txt
如何在构建期间强制mono保持相同的目录结构
作为更新,在构建期间,我还看到以下内容:
Target _CopyDeployFilesToOutputDirectoryPreserveNewest:
Copying file from 'Data/file1.txt' to 'bin/Release/file1.txt'
更新:这似乎是Xamarian Studio 5.9.4中的一个bug。带有标记为“复制到输出目录”的项的共享项目将不遵守它们在项目中的目录结构 假设:
- MonoDevelop/Xamarian Studio 5.9.x+
- 在项目选项/Build/General面板中,项目被标记为使用MSBuild
- 项目是一个.shproj(bug,其他项目类型都可以)
- 复制到输出目录
.
├── AGenericFile.txt
├── Data
│ ├── Data2
│ │ └── file2.txt
│ ├── SharedData.txt
│ └── file1.txt
├── Data2
│ └── file3.txt
├── foodata.exe
└── foodata.exe.mdb
如果仍然存在问题,请查看项目xml并确保
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
在每个数据文件上设置
项目/工具/编辑文件:
~~~
<ItemGroup>
<Folder Include="Data\" />
<Folder Include="Data\Data2\" />
<Folder Include="Data2\" />
</ItemGroup>
<ItemGroup>
<None Include="AGenericFile.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Data\file1.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Data\Data2\file2.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="Data2\file3.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
~~~
~~~
保存最新
保存最新
保存最新
保存最新
~~~
我似乎拥有所有这些功能,但仍然无法正常工作。不过,一个主要区别是该项目是一个共享项目,因此没有.csproj文件,而是一个.shproj文件,该文件没有MSBuild选项(或者其他任何选项)。但它确实包含与您的示例完全相同的XML。也许这是共享项目的一个bug?很有趣。Xam Studio/MonoDevelop正在使用他们自己的MSBuild版本,该版本针对proj xml文件运行(类似于VS,但它不是100%相同的…)。我会1)在Xamarin的论坛上发布shproj信息和/或打开一个bug()2)尝试使用EXEC语句复制这些文件,或使用自定义的Post build命令暂时手动执行..:-/谢谢你的帮助!现在将使用一个相当粗糙的cp命令。太棒了!这很好,但这是否意味着所有这些数据都将通过visual studio嵌入到程序集中?抱歉,睡眠不足。你是对的,那不是解决办法。回到cp脚本,我想-/