【问题标题】:ASP.NET compilation and separate assembliesASP.NET 编译和分离程序集
【发布时间】:2011-03-13 03:11:22
【问题描述】:

我不熟悉 ASP.NET(使用 MVC)处理.dll 文件的方式,想知道为什么会出现以下行为:

在这两种情况下,都有一个主 MVC 应用程序和一个辅助 MVC 应用程序 (MyApps.Secondary)。在这两种情况下,辅助应用程序在动作中都有硬编码的视图位置。

场景一

当我将辅助应用程序的 .dll 移动到主 MVC 应用程序的 bin 文件夹时,我可以导航到辅助应用程序中的控制器。

场景二

如果我将辅助应用程序的 .dll 移动到主 Web 应用程序下的 不同 文件夹(称为 extras),那么我必须执行以下是为了通过主 Web 应用程序轻松导航到辅助应用程序内的操作/控制器之一:

1-在编译部分的程序集部分下添加MyApps.Secondary

<compilation debug="true" targetFramework="4.0">
    <assemblies>
     <add assembly="MyApps.Secondary"/>

2-在探测元素中添加文件夹extrasMyApps.Secondary所在的文件夹`)

<probing privatePath="bin;extras"/>

我想我的问题是,为什么这两个场景都有效,为什么我需要在场景二中做额外的工作?

this question about the compilation element 的回答指出&lt;compilation&gt;&lt;assemblies&gt; 元素用于编译.cs.vb 文件,但在我的两种情况下,我都没有这两种类型的文件。它可能用于为辅助应用程序编译.aspx/.ascx 页面吗?如果确实是在编译.aspx/.ascx 文件,为什么我不需要在第一个场景中包含程序集?

【问题讨论】:

    标签: asp.net asp.net-mvc dll


    【解决方案1】:

    您的辅助应用程序中确实有 .cs 和 .vb 文件,但是它们已经被编译成 .dll。每个控制器文件、模型、部分类、存储库等都是 .cs 或 .vb 文件。

    为了回答您关于为什么必须做额外工作的问题,.NET 默认在 bin 文件夹中查找程序集以在构建运行时应用程序时包含(以及服务器本身的一些其他位置,但这不是与您的问题相关)。如果要包含不在 bin 文件夹中的程序集,则必须告诉它 a) 使用完全限定名称注册它,以及 b) 程序集实际所在的位置。

    从引用帖子的其他答案中查看this link,尤其是关于 web.config 的程序集部分的最后几段。这可能有助于为您增加一些清晰度(以及我的漫谈)。

    【讨论】:

    • 酷,你知道是否有可能实现scenario one 而无需将DLL 放在bin 文件夹中?理想情况下,只需将它们放到另一个文件夹中就可以实现与将它们放到bin 文件夹中相同的效果。 &lt;probing&gt; element 不会单独做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多