Visual Studio 2013解决方案文件夹在哪里?

时间:2014-03-26 12:10:30

标签: visual-studio visual-studio-2013 solution

我的现状:

我有一个解决方案,我将一个大型MVC项目分成两个较小的项目。当然,这两个较小的项目引用旧的大型项目中的相同JavaScript和内容文件。

我想做什么:

我没有复制2个项目中的脚本和内容,而是想创建一个共享文件夹,2项目通过链接或快捷方式引用。

我如何解决问题:

我认为解决方案文件夹是解决我的问题的方法。所以我想创建一个解决方案文件夹,我将移动所有脚本和内容文件。

然而,我的问题是我必须逐个文件移动到此文件夹,因为我们不能简单地添加现有文件夹(我将脚本和内容文件夹移动到解决方案目录本身而不是在特定项目中)。这太乏味了。

以下是我尝试做的事情:

  1. 首先,我尝试找到创建解决方案文件夹的位置。但是,我发现解决方案文件夹实际上并不存在。我认为它们只是解决方案的某种逻辑结构。每当您将文件添加到解决方案文件夹时,它都会物理地添加到解决方案目录中。
  2. 我认为解决方案文件(.sln)可能包含某种xml格式的解决方案文件夹及其内容的配置。但是,情况似乎并非如此。
  3. 我打开了解决方案的SQL Server Compact Edition文件(.sdf),认为可能存在描述解决方案文件夹的数据库表。但是,情况似乎并非如此。
  4. 所以,最后,我的问题是:

    有没有简单的方法可以将现有文件夹添加为解决方案文件夹,以避免逐个添加文件(我的文件太多)。

    更新

    感谢您的回答和建议。我最终采取了一种不同的方法。我使用了预构建命令:XCOPY "$(SolutionDir)Files\*.*" "$(ProjectDir)" /E我这样做是因为建议的解决方案和我之前的尝试是将链接/快捷方式添加到外部资源文件。虽然这很好,并且实际上已将快捷方式添加到项目中,但当我测试MVC项目时, IIS无法加载资源文件,因为它查找物理文件(当然)。

    所以现在我的查询是:在某种程度上,无论是构建事件还是csproj文件中的配置,还是“包含在项目中”新的“物理”复制文件?

5 个答案:

答案 0 :(得分:1)

如同建议:编辑项目文件是一种方式。另一种方法是使用类似于csproj文件的机制编辑解决方案文件。 在解决方案文件中,具有特定GUID的项目包含一组文件夹的详细信息。

编写一个小应用程序,它将读取您的文件夹并输出所需输出的小文本。生成新的Guids,直到创建文件。只需将其粘贴在.sln文件的顶部即可。 2150E333-8FDC-42A3-9474-1A3956D46DE8似乎是用于解决方案项目的GUID。

此示例包含几个子文件夹,其内容为嵌套结构。 即

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NewFolder1", "NewFolder1", "{4CDFCC66-45BD-4B6D-8758-FEF7E9F61C1C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubFolder1", "SubFolder1", "{771BDBFB-5C01-4C51-A170-D88ECA8DE896}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubFolder2", "SubFolder2", "{5D23AB90-5EF6-4611-A575-34F7B50BB1B6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NewFolder2", "NewFolder2", "{135E9F67-2DF8-4458-AC6D-FF82FC1B3BC6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubSubFolder1", "SubSubFolder1", "{B41C7BAA-7E3D-405B-96AB-005120D12D26}"
ProjectSection(SolutionItems) = preProject
    NewFolder1\SubFolder1\SubSubFolder1\a.txt = NewFolder1\SubFolder1\SubSubFolder1\a.txt
EndProjectSection

EndProject

答案 1 :(得分:1)

解决方案文件夹(在文件系统上)是可选的,在Visual Studio中,它们通常仅用于组织Visual Studio中的文件。

这是一种手动方法,可以在与解决方案相同的级别创建“物理”文件夹,但这会降低复杂性。

以下是移动单个脚本文件的步骤:

在文件系统上

  1. 创建解决方案文件夹(通常位于顶级目录)
  2. 将脚本文件从(一个)项目复制到解决方案文件夹
  3. 在Visual Studio中

    1. 创建解决方案文件夹
    2. 右键单击解决方案文件夹,选择添加>现有项目......
    3. 从文件系统上的新解决方案文件夹中选择脚本文件,然后单击添加
    4. 从project1
    5. 中排除/删除脚本文件
    6. 右键单击project1,选择添加>现有项目......
    7. 从文件系统上的解决方案文件夹中选择脚本文件,从添加按钮下拉列表中选择“添加为链接”
    8. 对所有其他项目重复步骤6-8
    9. 使用“添加为链接”我们做的主要事情是在解决方案文件夹中添加对脚本的引用,而不是实际文件被复制到项目文件夹

      请注意,您不仅限于一次处理一个文件,更容易跟踪。

答案 2 :(得分:1)

我知道找到解决方案文件夹所在位置的最快方式:

  1. 在Visual Studio中,打开“解决方案资源管理器(如果尚未打开)查看 - >其他Windows - >解决方案资源管理器(CTRL + ALT + L)

    < / LI>
  2. 在解决方案探索者中,右键单击您的项目或解决方案

  3. 选择添加 - &gt;新物品

  4. 弹出的窗口允许您选择新的文件模板,但您要查找的是底部的“位置”字段。它应该具有解决方案文件夹的路径。可以肯定的是,您的解决方案文件夹位于此位置或几个级别。

  5. 获得解决方案文件夹的路径后,可以单击取消退出向导。

答案 3 :(得分:0)

据我所知,visual studio并未通过其界面提供此功能。意图可能是项目文件存在于项目文件夹中而不是分开。它通常使项目的处理更容易(移动,共享等)。

也就是说,您不必将项目位置中的每个真实文件夹实际包含在该项目中。所以你可以做类似以下文件夹结构的事情:

+ /Projects (contains ProjectA.csproj and ProjectB.csproj)
    |
    +-- /ProjectA (folder with files that are just for "ProjectA"
    |
    +-- /ProjectB (folder with files just for "ProjectB")
    |
    +-- /Shared (Folder with your shared scripts/files)

使用此结构,您应该能够使用&#34;显示所有文件&#34;按钮并在两个项目中包含共享文件夹。您可能需要手动编辑csproj文件以映射到这个新结构,但它不应该太困难。

我能想到的唯一其他选择是尝试手动编辑this question shows等csproj文件。

希望一切都有所帮助。祝你好运!

答案 4 :(得分:0)

我对此问题的最终解决方案是解决方案建议的答案和我决定采用的方法的组合,以便本地 IIS可以查看文件。

我将以下部分添加到csproj文件中:

    <Content Include="..\Files\**">
    <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
</Content>

我还在项目中添加了以下命令作为预构建事件:XCOPY /y "$(SolutionDir)Files\*.*" "$(ProjectDir)" /E