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



我有一个包含许多项目的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还有一个将文件复制到输出目录的选项。只需将您的内容从"不复制"更改为"始终复制"即可。您可以在文件属性中找到该设置。

最新更新