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

时间:2008-09-17 12:05:30

标签: asp.net visual-studio

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

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

网络应用程序:

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

网站:

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:2)

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

Jeff Atwood本人提供了更多细节:Web Site Projects vs. Web Application Projects

  

由于缺少包含项目信息和元数据的物理文件,网站Web项目在Team System中尤其痛苦。例如,无法检查Web站点项目上的代码分析规则,因为代码分析规则完全存储在客户端上!

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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

然而,WebSite项目没有项目文件,您只需在解决方案中添加一个文件夹。

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

在WebApp项目中,您可以在一个项目中拥有资产,Css,视图(razor,aspx等),控制器/代码背后等,它们只是在一起。我更喜欢与两半的网站合作。前端(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 /上工作图像等(不在代码项目中)。保持层设计师分离,设计师只看到他们需要看到的东西。

现在结构明智。我使用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上的另一个端口,以及共享项目中的链接。只要您的代码与两者兼容,它就会构建,并且您没有任何重复的代码文件。