【问题标题】:Is it a bad idea for my solution and project to be stored in separate locations?将我的解决方案和项目存储在不同的位置是不是一个坏主意?
【发布时间】:2017-03-03 00:08:30
【问题描述】:

不知何故,我的解决方案和项目的路径/完整路径有所不同。

我的解决方案(“customerreportingnet”)的 Path 属性是:

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 中我以这种方式打开网站(解决方案/项目):

文件 > 打开网站...

然后我打开 IIS > EMS

执行此操作时,我看不到“项目”下的任何文件 - 解决方案资源管理器中可见的只是解决方案和项目名称 - 它们下没有子文件夹或文件。但是当我右键单击解决方案“customerreportingnet”并选择“打开网站”,然后回复“打开网站(这将关闭当前解决方案)”,一切都比较好-我可以右键单击项目( "http://localhost/EMS/customerreportingnet/"),选择在浏览器 (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,还是这只是一个奇怪的问题,但不是问题?

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

【问题讨论】:

    标签: asp.net iis-7.5 projects-and-solutions sln-file


    【解决方案1】:

    将我的解决方案和项目分开存储是不是一个坏主意 地点?

    • solution 是项目的“容器”。它们在本地文件系统中的位置并不重要。所以在这种情况下,它是“好的”。

      由一些“您以前做过的项目”组成的解决方案上下文并不罕见。因此,您可以“组织”一个由位于其他地方的项目(来自其他“解决方案”)以及新项目组成的“新”解决方案。

    • 然而,一旦您进入Source Control,无论是TFS 还是GIT,都将很重要——它们(解决方案中的项目)必须在同一个父文件夹中可以轻松处理。所以在这种情况下,它是“坏的”。

      TLDR;仍然有有效的源代码控制“不同文件夹中的项目”的方法 - 每个都是它自己独立的“存储库”。但是您必须手动/单独进行同步、合并等操作。

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

    取决于你追求什么,以及你正在处理什么文件:

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

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

    或者,您可以在 Visual Studio 中 Publish 您的网站/应用程序并定位一个本地文件系统文件夹,然后您可以在 IIS 中设置该文件夹(如果安装了本地 IIS) - 这样,您就有了一个“开发” (VS) 和“暂存”(在 IIS 中映射的发布文件夹)环境。

    第...

    【讨论】:

    • 谢谢;我是这样做的(文件 > 打开网站...),因为这些是交给我项目的人给我的指示。我知道无论我采用哪种方式,我都会遇到挑战,如果我偏离了他的精确指示,他会觉得这就是为什么它不起作用的原因。我确实尝试过简单地将它作为 VS 中的解决方案打开,但也有问题。如果对这个故事感兴趣,请参阅stackoverflow.com/questions/42450617/…
    • @B.ClayShannon 网站或项目就是它们本来的样子(没有魔法)。在上面 IIS 中的步骤中,不要添加 虚拟目录,而是尝试 Add New Web Site,这样它就成为它自己的应用程序(您可以自己管理 - 应用程序池等)而不是一些“子应用程序”(某些父母的)。当然,除非它是已经“安装”在本地机器上的父应用的“子”。
    • 会以这种方式添加网站,指向相同的文件,然后解决问题吗?我最不想做的就是破坏我已经取得的一点点进步。
    • 不应该。但是,如果您很谨慎,您可以简单地再次解压缩到一个新文件夹 Add A New Web Site 并将其指向该新文件夹。当然,还有所有其他必需的 IIS 设置(绑定、hostname 和您的hosts 文件)。现在您有了“另一个实例”,与您迄今为止所做的一切完全分开(干净的石板)。
    • 如果您使用本地 IIS,您将需要完成这些任务 - 这样您就可以拥有任意数量的“网站” - 所有这些都完全相互独立。在 VS 中,这将自动为您完成 - VS/IIS Express 将使用端口号(而不是主机名,并与 hosts 文件混淆)来区分彼此。
    【解决方案2】:

    提取代码并在 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 是因为最近项目的根目录已经有很多(配置)文件,这样您可以使根目录更干净一些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多