1

我们有一堆示例 ASP.NET 应用程序。我不想在每个示例中将 DLL 复制到 Bin 文件夹,因为这样所有文件都必须在更改时更新。

有没有办法将 ASP.NET 应用程序指向引用,例如可以使用表单或命令行应用程序完成?

更新:为了回答下面的问题,让我更好地解释一下这里的情况。我们有一个商业产品,它是一组 DLL。我们提供了许多使用它的示例应用程序,包括几个 ASP.NET 应用程序。所有这些,我们的产品 DLL 和我们的示例源,都安装在用户的计算机上。

当他们编译其中一个示例时,我们希望该示例使用与它一起安装的 DLL 版本。安装过程在 GAC 中作为默认选项,但用户可以取消选中是否不希望 GAC 中的 DLL,在这种情况下,我们必须访问安装它们的 DLL,或者将它们复制到每个 Bin 目录.

4

4 回答 4

3

要添加引用,请右键单击 Visual Studio 中的 bin 文件夹,您将在那里找到添加引用选项。

于 2012-04-15T03:01:43.623 回答
2

问题很清楚,但背景不是。

有几个应用程序都使用相同的应用程序 dll 对我来说毫无意义。它只是所有应用程序使用的库吗?

有一些选项取决于你有什么和你需要什么:

1.直接添加引用

如果你真的只是想添加一个引用,在你的 VS 项目中右键单击“引用”并选择“添加引用”。选择参考并单击确定。之后,右键单击添加的引用并选择“属性”并将“本地复制”设置为 false,因此它不会复制到 bin 文件夹中。

也许选项名称有点不同,但我现在没有英文 VS。应该几乎是你必须做的。

编辑

在此窗口中,将“本地副本”设置为“false”(此处显示为“Lokale Kopie”,抱歉,它是德语)。

设置本地副本

2. 将dll放入GAC

如果您在同一台服务器上有几个应用程序的共享代码库,您可以考虑将该库放入GAC中。

3. 源代码控制问题

正如 IrishChieftain 中提到的,您可能会使用源代码控制并且不想每次都更新 bin 文件夹中的 dll。解决方案就是忽略源代码管理中的 bin 文件夹。

于 2012-04-15T04:08:45.003 回答
1

您可以使用项目的 References 节点上的上下文菜单添加您想要的任何引用: 在此处输入图像描述

在“添加参考”对话框中,单击“浏览”选项卡,您可以浏览并添加您需要的任何外部参考。对于公共程序集,我们通常将它们放在文件系统上的公共位置,然后在需要时从该位置引用它们。

于 2012-04-15T04:12:33.257 回答
1

在某些情况下,您不想在设计时引用某些程序集。您可以根据逻辑在运行时使用 AppDomain.AssemblyResolve 事件处理程序加载它们。如果您有可以通过抽象级别引用的程序集并且您不想直接引用,则可以使用以下模式省略它们并在运行时执行一些算法来查找程序集并将其添加到 AppDomain。

这是我放入 global.asax, Application_Start 处理程序的片段:

public class Global : System.Web.HttpApplication
{

    protected void Application_Start(object sender, EventArgs e)
    {
        AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
    }

    System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        // use this space to add logic to find your assemblies

        return null; // will throw a Dependency-related exception
    }

让我知道是否有任何问题,或者我是否错过了您的问题的重点。

-G

于 2012-04-15T04:19:06.583 回答