ASP.NET中的网站或Web应用程序

ASP.NET中的网站或Web应用程序,asp.net,visual-studio,Asp.net,Visual Studio,ASP.NET网站应使用哪种Visual Studio模板?网站模板还是项目?web应用程序模板?我更喜欢网站。网站是目录中文件的集合。它变得更加便携和可部署。web应用程序使用项目文件来掩盖问题。您最好阅读以下内容: 在我看来,这取决于您正在开发什么Web应用程序项目的工作方式更像传统的VS项目,它有一个项目文件,一步编译完成,依此类推 网站项目更像经典的ASP或PHP网站。没有项目文件(引用存储在解决方案文件中),页面会在服务器上动态重新编译。web站点的好处在于,您可以通过ftp连接到服务

ASP.NET网站应使用哪种Visual Studio模板?网站模板还是项目?web应用程序模板?

我更喜欢网站。网站是目录中文件的集合。它变得更加便携和可部署。web应用程序使用项目文件来掩盖问题。

您最好阅读以下内容:
在我看来,这取决于您正在开发什么

Web应用程序项目的工作方式更像传统的VS项目,它有一个项目文件,一步编译完成,依此类推

网站项目更像经典的ASP或PHP网站。没有项目文件(引用存储在解决方案文件中),页面会在服务器上动态重新编译。web站点的好处在于,您可以通过ftp连接到服务器并在文本编辑器中更改文件。你不需要,但有些人可能讨厌


这可能取决于你的背景。如果您习惯于ASP或PHP风格的开发,那么web站点项目对您来说会更自然。如果您有传统的应用程序开发人员背景,web应用程序项目将看起来更自然。

就我个人而言,我现在只使用web应用程序项目。事实上,由于网站的编译时间,我将一个相当不错的网站转换成了一个web应用程序


我还使用预生成事件来移动配置特定的配置文件,在Web站点中没有预构建和后期生成事件。

< P>如果使用Team Foundation Server进行源代码管理,则可能需要使用Web应用程序项目,因为您需要.CSPROJ文件。 杰夫·阿特伍德本人提供了更多细节:

由于缺少包含项目信息和元数据的物理文件,Web站点Web项目在团队系统中尤其痛苦。例如,不可能在网站项目上签入代码分析规则,因为代码分析规则完全存储在客户机上


两者的功能和性能相似,但在以下方面仍有所不同:

Web应用程序:

  • 我们不能在单个web应用程序中包含C#和VB页面
  • 我们可以在多个项目之间建立依赖关系
  • 部署后,如果不重新编译,则无法编辑单个文件
  • 多个开发人员联合工作以创建、测试和部署的企业环境的正确选择
网站:

  • 可以在单个网站中混合使用VB和C#页面
  • 无法建立依赖关系
  • 部署后编辑单个文件
  • 当一个开发者负责创建和管理整个网站时,这是一个正确的选择

在Visual Studio 2015中,与web应用程序项目相比,我更喜欢网站项目。尽管如此,我仍然使用VisualStudio,因为您获得了Nuget打包,所以可以将Nuget包安装到这两种类型的项目中

但是,网站项目没有项目文件,您实际上只是将文件夹添加到解决方案中

不过,您仍然可以使用代码,但我更喜欢将其放在单独的项目中

在WebApp项目中,您的资产、Css、视图(razor、aspx等)、控制器/代码落后等都集中在一个项目中,并且它们只是混合在一起。我更喜欢把网站分成两半。前端(css、js、图像,“html/cshtml/aspx/ashx/.master/etc”)和后端(所有代码)

因此,我创建了一个网站项目和一个类库(在VisualStudio中,您可以添加对网站项目的引用)。我将类库添加为依赖项,所有代码都在类库中。你仍然可以有一个global.asax,你只需要告诉它后面的代码在另一个dll中(不是网站将编译到的那个dll)。MVC视图中,您只需像普通视图一样指定名称空间(dll是reference,因此名称空间就在那里)。在WebForms中,您只需记住在代码所在的类型引用中包含程序集名称

习惯起来有点乏味,但当你有一个独立的结构时,一切都在一个有意义的地方,并以易于维护的方式模块化

好的一面是,因为网站只是一个文件夹(没有项目文件),它可以在VisualStudio代码中轻松打开,其他流行的文本编辑器使设计师可以轻松地处理css/js/图像等(不在代码项目中)。保持层设计器分离,设计器只看到他们需要看到的内容

现在是结构方面。我使用Tortoise SVN和Visual SVN(java/.net shop)将我机器上的本地代码签入subversion存储库。为了在本地进行测试,我安装了IIS,并在IIS中本地设置了网站项目,就像在dev/prod服务器上一样

然后在dev/prod服务器上安装MSDeploy,并通过VisualStudio中的MSDeploy使用发布web应用程序功能,然后使用web.config转换。因此,我对dev和prod进行了web.config转换,没有转换的主web.config用于本地测试(因此它适用于项目中的所有dev)

对于前面提到的缺点:拥有一个网站项目和一个WebApp项目并不意味着多个开发人员不能处理它,只有当你的网站项目位于某个服务器上,并且你直接从那里加载它时,这才是不好的做法

您可以像对待任何其他VisualStudio项目一样对待网站项目、本地代码、源代码管理和多个开发人员

最后,分离代码的另一个好处是,您可以将所有代码放在一个共享项目中。然后,您可以为可能执行的每个端口创建一个类库,比如说,一个在.NET4.6上,另一个在.NETCore5上,并在共享项目中链接。只要您的代码与两者兼容,它就会生成,并且您没有任何重复的代码文件。

当我创建web应用程序时