【问题标题】:ASP.NET Website's BIN directory and referencesASP.NET 网站的 BIN 目录和参考资料
【发布时间】:2008-12-18 16:12:48
【问题描述】:

想象以下解决方案:

  • 网站 ABC.com(不是 Web 应用程序)
  • BLL(单独程序集中的业务逻辑层)
  • DTO(dto 对象在自己的程序集中)
  • DAL(它自己的程序集中的数据访问层)。

    1. BLL 引用了 DAL。
    2. BLL 引用了 DTO 层。
    3. 网站项目引用了 BLL。

编译网站工程时,BIN目录下会出现以下DLL:
BLL.dll
DTO.dll
DAL.dll

当你去预览站点时,会出现一个错误,因为没有必要的程序集引用...现在如果右键单击网站项目,添加引用,并显式添加对缺少的程序集的引用,它将起作用很好。

在我看来,ASP.NET 会拉取在网站中添加/引用的被引用程序集的被引用程序集。

为什么需要对引用的引用添加显式引用...?抱歉,如果我的措辞不正确或令人困惑。

【问题讨论】:

    标签: asp.net reference shared-libraries assemblies web-site-project


    【解决方案1】:

    我认为问题可能与使用网站项目有关,而不是使用 Web 应用程序。我一时想不起来了,但是网站项目的编译方式有些古怪,与 Web 应用程序项目相反。

    【讨论】:

    • 网站项目不会被编译——也就是说,直到运行时。它们非常奇怪,因此应该避免使用。
    • @JohnSaunders 他们很奇怪,我讨厌并避免他们,但在工作中他们有一个很大的优势。我们的系统已经针对各种客户进行了多次修改,有时我们需要客户向我们发送他们的网站以及源代码。如果网站已经编译,那么反编译 DLL 将是一个非常漫长而棘手的过程。我从经验中知道这一点。
    【解决方案2】:

    这是一篇关于您的问题的好文章Compilation and Deployment

    这与在运行时编译的“网站”有关。希望以上文章能回答您的问题。

    【讨论】:

      【解决方案3】:

      今天刚刚为我正在进行的项目测试了这个场景。只需将您的程序集添加到 Web.config 中就可以了:

      <compilation debug="true">
        <assemblies>
          <clear/>
          <add assembly="mscorlib"/>
          <add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
          <add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
          <add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
          <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      
          <add assembly="YourBLLLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
        </assemblies>
      </compilation>
      

      您的程序集也应该保留在您网站根目录下著名的 ./bin 文件夹中。 GL!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多