Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何像VisualStudio一样将单拷贝数据文件复制到子目录中_C#_Xamarin_Mono_Xamarin Studio_Xamarin.mac - Fatal编程技术网

C# 如何像VisualStudio一样将单拷贝数据文件复制到子目录中

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

我有一个C#项目,它引用了一个共享项目。共享项目包含许多我希望复制到文件夹中的数据,例如

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脚本,我想-/