关于visual studio:ASP.NET中的Web站点或Web应用程序

关于visual studio:ASP.NET中的Web站点或Web应用程序

Web Site or Web Application in ASP.NET

哪个Visual Studio模板应该用于ASP.NET网站,Web站点模板或Project | Web应用程序模板?


功能和功能都相似,但在以下方面仍然有所不同:

Web应用程序:

  • 我们不能在单个Web应用程序中包含C#和VB页面。
  • 我们可以在多个项目之间建立依赖关系。
  • 无需重新编译即可在部署后编辑单个文件。
  • 适用于企业环境的正确选择,其中多个开发人员共同致力于创建,测试和部署。

网站:

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

你最好读一读:
http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx
在我看来,这取决于你正在开发什么


如果您使用Team Foundation Server进行源代码管理,则可能必须使用Web应用程序项目,因为您需要.csproj文件。

Jeff Atwood本人提供了更多详细信息:网站项目与Web应用程序项目

Web Site web projects are particularly painful in Team System due to the lack of a physical file that contains project information and metadata. For example, it's impossible to check in code analysis rules on Web Site projects, because the code analysis rules are stored entirely on the client!


Web应用程序项目更像传统的VS项目,它有一个项目文件,一步编译等等。

网站项目更像是传统的ASP或PHP站点。没有项目文件(引用存储在解决方案文件中),并且在服务器上动态地重新编译页面。网站的好处是你只需要ftp到服务器并在文本编辑器中更改文件。你不需要VS.但有些人可能会讨厌这一点。

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


我更喜欢网站。网站是目录中文件的集合。它变得更加便携和可部署。 Web应用程序通过项目文件来解决问题。


在Visual Studio 2015中,我有点喜欢Web站点项目而不是Web应用程序项目。我仍然使用visual studio,因为你得到了Nuget Packaging,你可以在两种类型的项目中安装nuget包。

但是,WebSite项目没有项目文件,您只需在解决方案中添加一个文件夹即可。

但是你仍然可以拥有代码,但我更喜欢把它放在一个单独的项目中。

在WebApp项目中,您可以在一个项目中拥有Assets,Css,Views(razor,aspx等),Controllers / Code Behinds等,它们只是在一起。我更喜欢与两半的网站合作。前端(css,js,images,"html / cshtml / aspx / ashx / .master / etc")和后端(所有代码)。

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

使用起来有点乏味,但是当你拥有孤立的结构时,一切都在一个有意义的地方,并以易于维护的方式模块化。

PLUS方面是因为网站只是一个文件夹(没有项目文件),它可以很容易地在Visual Studio Code中打开,而其他流行的文本编辑器使设计人员可以轻松地处理css / js / images等(这些不在代码项目中)。保持层设计师分离,设计师只看到他们需要看到的东西。

现在结构明智。我使用Tortoise SVN和Visual SVN(java / .net shop)将我的代码保存在我的机器本地检查到subversion存储库。要在本地测试我安装IIS,我在本地IIS中设置网站项目就像我在dev / prod服务器上一样。

然后我在dev / prod服务器上安装MSDeploy,我在visual studio中通过MSDeploy使用Publish web app功能,我使用web.config转换。所以我有dev和prod的web.config转换,没有转换的主web.config用于本地测试(因此它适用于项目中的所有开发人员)。

对于之前陈述的缺点:拥有WebSite项目与WebApp项目并不意味着多个开发人员无法处理它,只有当您的WebSite项目位于某个服务器某处并且您直接从那里加载它时才会这样做实践。

您可以像处理任何其他Visual Studio项目,本地代码,源代码控制和多个开发人员一样处理WebSite项目。

最后要注意的是,分离代码的另一个好处是可以将所有代码放在共享项目中。然后,您可以为您可能执行的每个端口创建一个类库,例如直接.net 4.6上的一个,以及.net核心5上的另一个端口,以及共享项目中的链接。只要您的代码与两者兼容,它就会构建,并且您没有任何重复的代码文件。


我个人现在专门使用Web应用程序项目。由于网站的编译时间,我实际上将一个相当网站转换为Web应用程序。

我还使用预构建事件来移动配置特定的配置文件,并且在网站中不提供预构建和后构建事件。


推荐阅读