【问题标题】:ASP.NET - bin Directory vs. Adding Assembly in web.confASP.NET - bin 目录与在 web.conf 中添加程序集
【发布时间】:2010-01-13 21:52:15
【问题描述】:

我对 ASP.NET 编程比较陌生(但不是一般的编程),我一直在查看一个已移交给我的项目。在这个项目中,有一个 bin 目录,其中包含大量各种 DLL 文件。

然后,在 web.conf 文件中,在程序集结构内(在 XML 中),添加了大量其他程序集。

我已经在 SO 和 Google 上进行了一般搜索,但我仍在为两者之间的区别而苦苦挣扎。一种方式比另一种方式“更好”吗?任何可以提供的澄清将不胜感激。

谢谢。

【问题讨论】:

    标签: asp.net assemblies


    【解决方案1】:

    有几种方法可以在 ASP.NET 应用程序中引用程序集(通常是 DLL):

    1. 将 DLL 添加到应用程序的“bin”目录。这会在应用程序中的每个代码文件和 ASPX 文件中创建对该 DLL 的隐式引用。这意味着 ASPX 文件中的代码或 App_Code 中的 CS 文件中的代码可以使用该 DLL 中的类型。

    2. 在 web.config 的 <assemblies> 部分中添加对 DLL 的引用。有关语法的详细信息,请参阅MSDN。通常有多个 web.config 文件适用于特定的 Web 应用程序。应用程序本身可以有多个 web.config 文件(例如,特定文件夹中的 web.config 可能会添加自己的引用)。还有一个全局 web.config(或 machine.config),其引用可用于计算机上的所有 ASP.NET 应用程序。

    3. 在特定的 ASPX(或 ASCX 或 MASTER)文件中使用 <%@ Assembly Name="" %> 指令。有关语法的详细信息,请参阅MSDN

    ASP.NET 应用程序中给定文件中的引用是上述适用项的组合。

    您必须引用程序集的原因是 ASPX 文件(很像 CS 和 VB 文件本身)最终由 C# 或 VB 编译器编译。为了让那些编译器知道你想使用什么类型,他们需要知道哪些程序集包含这些类型。

    【讨论】:

    • 感谢您的回答!好资料。一个问题 - 介于 1 和 2 之间,我有什么理由要选择其中一个吗?
    • 如果 DLL 没有强名称签名,您会选择 #1,在这种情况下,它不能在 GAC 中,因为 GAC 要求程序集已签署。如果 DLL 安装在 GAC 中,您将选择 #2。因此,它本身并不是真正的“选择”,而更像是一个决策矩阵。
    【解决方案2】:

    bin 目录是您的项目构建和引用的所有 dll 的副本。当 Web 应用程序运行时,它会在 bin 目录中查找执行 Web 应用程序所需的物理 dll。

    【讨论】:

    • 您的第二段陈述不正确。 web.config 引用的 DLL 绝对不会复制到 bin 目录中 - ever.
    猜你喜欢
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多