2011-01-24 85 views
0

我接管了一个引用dll的Web应用程序项目。该解决方案具有实际的项目以及用于创建DLL的类库。我需要对Web应用程序进行更改并部署到生产环境。我用来部署asp.net网站以及非常简单的传统asp,只需复制这些文件即可。.Net Web应用程序和编译/部署

我需要帮助来理解编译和部署过程。这里有一些问题: 1)类库(DLL)改变;我只是编译该类库项目并仅移动该Dll。 2)Web应用程序项目改变了,dll保持不变;我要移动哪些文件。

此外,如果有人可以澄清部署时如何处理DLL版本。我用旧的注销/注册DLL的方式,现在情况并非如此。我担心在同一个盒子上有多个DLL副本。

任何帮助或阅读引用将不胜感激。

贾马尔

回答

0

听起来像你正在讨论预编译的.net应用程序。该应用程序使用Aspnet_compiler.exe进行编译,并将新的DLL复制到主机。

DLL不必注册,IIS“知道”如何处理预编译的.net应用程序。这几乎是随时随地的;与直接复制.aspx文件不同。

您可以更新DLL的子集(例如,类库)。有几种可用模式允许您编译全部或部分应用程序。

+0

如何在不更改后面的代码的情况下更改aspx文件,您必须编译或仅移动aspx。 – Jamal 2011-02-11 16:34:37

0

当您更改DLL,很多时候,你能把它的权利在假设你不是一个特定的版本数量的参考。通常为了安全起见,我在更改DLL时再次将整个网站复制出来。它不是绝对必要的,但它可能是最简单的方法,如果您的网站不是太大。

如果要更改未以其编译形式(App_Code文件夹中的.aspx,.aspx.cs,.cs文件)进行部署的文件,只需更新该特定文件并重新启动IIS即可。

0

当您以这种方式手动部署时,很容易犯一个错误(忘记复制相关文件)。这发生在我身上。

我建议您使用Visual Studio中的发布功能。 您可以右键单击Web应用程序,然后从上下文菜单中选择“发布”。我通常发布到本地文件夹(您可以直接发布到您的服务器),然后使用FileZilla等FTP客户端进行实际部署(我有一些直接从Visual Studio部署的问题)。

使用FileZilla上传时,您可以指定希望如何处理现有文件覆盖。 我使用选项:'覆盖,如果源文件更新'。这种方式部署速度很快(只有已更改的文件被删除)并且安全,因为我们不能错过文件。

要回答你的问题: 1)是,部署类库是足够的,但只有在它与旧版本保持二进制兼容的情况下(容易出错)。 2)您需要部署已更改的文件(dll,aspx,cshtml等)。如果类库dll没有更改,则不需要重新部署它们。

按照上面的步骤,你应该没问题。

+0

注意:如果您确实'覆盖源文件更新',请务必不要让Visual Studio删除发布文件夹中的内容,否则可能会覆盖未更新的文件 – Jimmy 2011-01-24 20:11:59

+0

谢谢大家的回复。我还在努力的是DLL版本控制部分。我做了更多的研究,似乎有东西告诉Web应用程序要使用哪些DLL版本以及从哪个文件夹(\ bin)。另外,我计划移动所有的文件,但我需要了解哪些文件是必要的,因为项目已编译。 – Jamal 2011-01-26 13:57:02

0

一般来说,如果一个相关程序集改变了,你可以部署新程序集。但是,如果该程序集的任何接口发生更改或者存在其他相应的Web应用程序更改,则必须部署整个事件。这就是说,我见过的商店需要完整的重新编译,部署和测试,即使只是依赖程序集中的一行代码发生了变化。

完整的部署部分非常简单。

  1. 右键单击Web项目,然后单击发布。
  2. 直接发布到Web服务器(我不推荐这么做)或将其发布到本地目录。
  3. 进行生产推送所需的任何配置更改。
  4. 如果您发布到本地目录,请将编译的文件复制到您的生产服务器。

有人说先删除生产文件,然后复制。其他人说复制到一个新的目录并重新命名IIS到新的目录。你必须看到什么适合你。

现在,网络应用给你的一件事就是配置转换。这意味着您可以让编译器根据您要发布的环境进行配置更改。我强烈建议你研究和使用这些。这使坏的可能性大大降低。