如何将C#项目目录传递到解决方案输出目录

时间:2015-02-17 22:20:44

标签: c# build project solution

我有一个包含许多项目的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

4 个答案:

答案 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>