我有一个包含许多项目的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
答案 0 :(得分:1)
您可能希望在Visual Studio Build Pre / Post事件中使用Xcopy,具体取决于您需要文件的顺序。 xcopy SourceFolder $(SolutionDir)YourFolderNameHere *。*“/ E / H
正如本文中here
所述答案 1 :(得分:1)
另一个解决方案是编辑您的.csproj并搜索 OutputPath 标记。对于调试输出,它必须类似于:
<OutputPath>bin\Debug\</OutputPath>
根据您的要求,将其设置为:
<OutputPath>..\bin\Debug\</OutputPath>
答案 2 :(得分:0)
Visual Studio还可以选择将文件复制到输出目录。只需将您的内容从“不复制”更改为“始终复制”。您可以在文件属性中找到该设置。
答案 3 :(得分:0)
经过更多的研究后,我偶然发现了答案(部分基于this answer to a similar question)。该解决方案涉及使用以下
手动修改SupportProject.cproj文件<ItemGroup>
<Content Include="MyFolder\**">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>