将我的解决方案和项目存储在不同的位置不是一个好主意吗?

Is it a bad idea for my solution and project to be stored in separate locations?

我的解决方案和项目在 Path/FullPath 方面有所不同。

我的解决方案 ("customerreportingnet") 的路径 属性 是:

C:\Users\cshannon\Documents\Visual Studio 2013\Projects\customerreportingnet\customerreportingnet.sln

该解决方案下的唯一项目是网站(“http://localhost/EMS/customerreportingnet/”)。

网站项目的FullPath是这样的:

C:\EnhancedMonthlySalesReporting\customerreportingnet\customerreportingnet

为什么解决方案和项目位置会不同?

我是不是设置有误?我从 .zip 文件下载文件,并将它们解压缩到 C:\EnhancedMonthlySalesReporting\

然后我在 IIS 中创建了一个虚拟目录,将其映射到 C:\EnhancedMonthlySalesReporting\customerreportingnet\customerreportingnet,为其指定别名 "EMS".

然后在 VS 中我这样打开网站 (solution/project):

文件 > 打开网站...

然后我打开 IIS > EMS

执行此操作时,我没有在 "project" 下看到任何文件 - 在解决方案资源管理器中可见的只是解决方案和项目名称 - 在它们下面没有子文件夹或文件。但是当我右击解决方案"customerreportingnet"和select"Open Web Site",然后回复OK到"Open the Web site (this will close the current solution)"一切都比较好-我可以右击项目("http://localhost/EMS/customerreportingnet/"), select 在浏览器 (Internet Explorer) 中查看并且站点运行。

C:\Users\cshannon\Documents\Visual Studio 2013\Projects\customerreportingnet\ 中唯一的文件是:

customerreportingnet.sln customerreportingnet.v12.suo

C:\EnhancedMonthlySalesReporting\customerreportingnet\customerreportingnet 有这些文件和更多(以及 beaucoup 文件夹)。

我应该尝试将解决方案路径重置为 C:\EnhancedMonthlySalesReporting\customerreportingnet\customerreportingnet,还是这只是一个奇怪的问题,但不是问题?

如果是这样,是否就像更改 属性 值一样简单,还是会把事情搞砸?

Is it a bad idea for my solution and project to be stored in separate locations?

  • A solution 是项目的 "container"。它们在本地文件系统中的位置并不重要。所以在这种情况下,它是 "fine"。

    由一些 "projects you did before" 组成的解决方案上下文并不罕见。因此,您可以 "organize" 一个 "new" 解决方案,该解决方案由位于其他地方的项目(来自其他 "solution")以及新项目组成。

  • 但是,一旦你进入Source Control,无论是TFS还是GIT,那就很重要了- 它们(解决方案中的项目)必须位于同一个父文件夹中才能轻松处理。所以在这种情况下,它是 "bad".

    TLDR;仍然有一些方法可以有效地进行源代码控制 "projects in different folders" - 每一个都是独立的 "repository"。但是您必须 manually/separately 进行同步、合并等

如果我正确地关注了你的 post,我认为你正在寻找的是 Add...,而不是 Open... - 你想添加一个 现有项目或网站 到解决方案。

取决于您的追求,以及您要处理的文件:

  • 如果压缩文件中有Project,那么你可以Add Existing Project,依此类推...

不确定为什么需要执行在 IIS 中所做的操作 - 您可以在 Visual Studio (IIS Express) 中进行调试。

或者,您可以从 Visual Studio Publish 您的网站 site/application 并定位一个本地文件系统文件夹,然后您可以在 IIS(如果安装了本地 IIS)中设置 - 这样,您的本地计算机中有一个 "dev" (VS) 和 "staging"(在 IIS 中映射的发布文件夹)环境。

第...

提取代码并在 visual studio 中打开项目后。

Visual studio打开项目会自动生成一个解决方案文件(也可以直接打开解决方案文件)。单击 save all 或保存解决方案文件后,它会将其保存到以前的位置或默认位置。

由于您之前没有保存文件,visual studio会将其保存到默认位置:

 C:\Users\cshannon\Documents\Visual Studio 2013\Projects\[ProjName]\[ProjName].sln

如果您希望其他开发人员能够轻松打开您的项目。 (特别是当您开始在 1 个解决方案中拥有多个项目时),您希望将解决方案文件包含在项目位置中。否则每个开发人员都必须自己创建这个解决方案文件,这是一项烦人且繁琐的工作。

自 dotnet core 以来,最佳实践文件结构是这样的:

/root
   /src <== contians all the projects per folder
      /project1
         /project1.csproj
         /etc*
      /project2
   /[ANameForSolution].sln (so directly inside the proj folder, next to src)

人们使用的旧习惯更扁平:

/root
   /project1
   /project2
   /YourSolution.sln

最佳做法,将所有内容移动到 /src 是因为最近项目的根目录已经有很多(配置)文件,这样您可以使根目录更干净一些。