我有一个包含许多项目的VS2010.NET解决方案。其中一个项目中有一个非源代码目录。当我构建这个解决方案时,我需要将该目录复制到解决方案构建输出目录中。我要做的是在解决方案运行时访问该文件夹中的文件。由于此应用程序将分发到多台计算机,因此我还需要分发这组数据文件。
回顾一下,以下是我的(简化的)解决方案层次结构看起来像
solution
|
+----MainProject
| |
| +----source.cs
|
+----SupportPorject
|
+----source.cs
+----MyFolder
|
+----DataFile1
+----DataFile2
+----DataFile3
当我构建解决方案时,我希望有以下
solution
|
+----bin
|
+----Debug
| |
| +----Solution.exe
| +----SupportProject.dll
| +----SupportProject.pdb
| +----MyFolder
| |
| +----DataFile1
| +----DataFile2
| +----DataFile3
|
+----Release
|
+----Solution.exe
+----SupportProject.dll
+----MyFolder
|
+----DataFile1
+----DataFile2
+----DataFile3
您可能希望在Visual Studio Build Pre/Post事件中使用Xcopy,具体取决于所需文件的顺序。xcopy SourceFolder$(SolutionDir)YourFolderName此处*.*"/E/H
如本文所述,
另一个解决方案是编辑您的.csproj并搜索OutputPath标记。对于Debug输出,它必须类似于:
<OutputPath>binDebug</OutputPath>
根据您的要求,将其设置为:
<OutputPath>..binDebug</OutputPath>
经过更多的研究,我偶然找到了答案(部分基于对类似问题的回答)。该解决方案涉及使用以下手动修改SupportProject.cproj文件
<ItemGroup>
<Content Include="MyFolder**">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
Visual Studio还有一个将文件复制到输出目录的选项。只需将您的内容从"不复制"更改为"始终复制"即可。您可以在文件属性中找到该设置。