如何将 C# 项目目录传递到解决方案输出目录
How to deliver a C# project directory to a solution output directory
我有一个包含许多项目的 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 构建 Pre/Post 事件中使用 Xcopy,具体取决于您需要文件的顺序。
xcopy SourceFolder $(SolutionDir)YourFolderNameHere*.*" /E /H
如本 post 中所述 here
另一个解决方案是编辑您的 .csproj 并搜索 OutputPath 标签。对于 Debug 输出,它必须类似于:
<OutputPath>bin\Debug\</OutputPath>
根据您的要求,设置为:
<OutputPath>..\bin\Debug\</OutputPath>
Visual Studio 还有一个选项可以将文件复制到输出目录。只需将您的内容从 "Do Not Copy" 更改为 "Copy Always"。您可以在文件属性中找到设置。
经过大量研究,我偶然发现了答案(部分基于 this answer to a similar question)。解决方案涉及使用以下内容手动修改 SupportProject.cproj 文件
<ItemGroup>
<Content Include="MyFolder\**">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
我有一个包含许多项目的 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 构建 Pre/Post 事件中使用 Xcopy,具体取决于您需要文件的顺序。 xcopy SourceFolder $(SolutionDir)YourFolderNameHere*.*" /E /H
如本 post 中所述 here
另一个解决方案是编辑您的 .csproj 并搜索 OutputPath 标签。对于 Debug 输出,它必须类似于:
<OutputPath>bin\Debug\</OutputPath>
根据您的要求,设置为:
<OutputPath>..\bin\Debug\</OutputPath>
Visual Studio 还有一个选项可以将文件复制到输出目录。只需将您的内容从 "Do Not Copy" 更改为 "Copy Always"。您可以在文件属性中找到设置。
经过大量研究,我偶然发现了答案(部分基于 this answer to a similar question)。解决方案涉及使用以下内容手动修改 SupportProject.cproj 文件
<ItemGroup>
<Content Include="MyFolder\**">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>