【问题标题】:Persist a reference in ASP.NET web site在 ASP.NET 网站中保留引用
【发布时间】:2012-09-18 14:51:38
【问题描述】:

我们有 VS2010,ASP.NET 4.0 网站(不是 web 项目)。多个开发人员正在研究它。我需要这个站点来引用 AjaxControlToolkit.dll。因此,我将 AjaxControlToolkit.dll 签入到源代码管理中,然后右键单击网站,转到属性页、引用,单击添加,然后添加 AjaxControlToolkit.dll。

由于我的操作,AjaxControlToolkit.dll 被复制到网站的 BIN 文件夹中。所以,在我的机器上一切正常。但是,我在解决方案或项目文件中的任何地方都没有看到从网站引用 AjaxControlToolkit.dll 的记录。

由于我们没有将 BIN 文件夹或任何 .user 或 .suo 文件签入源代码管理,因此当另一个开发人员获取最新版本时,BIN 文件夹中缺少 AjaxControlToolkit.dll 并且他/她会收到错误,直到他/她将 DLL 添加到 BIN 文件夹中。

有什么方法可以将 DLL 引用添加到网站并使该引用在不同的机器上保持不变?

谢谢。

【问题讨论】:

  • 如果您使用的是 ASP.net 网站,而不是 Web 应用程序,那么这就有点尴尬了。如果它是一个老式的网站项目,那么我建议将其升级为 Web 应用程序。

标签: asp.net .net visual-studio-2010 visual-studio


【解决方案1】:

在我现在的公司,我们在项目中创建了一个名为“ReferencedAssemblies”的文件夹。所有外部(非 .NET)程序集都位于此文件夹中并从中引用。

这样,您还可以保证无论何时开发人员执行“获取最新”或部署项目时,都会出现对外部程序集的任何更新。

HTH。

【讨论】:

  • 我们有相同的设置。我的问题是关于从“ReferencedAssemblies”文件夹到网站中的 BIN 文件夹的 DLL。如果您使用“添加引用”菜单,则会复制 DLL,但此引用不会反映在解决方案文件中,因此当另一个开发人员获得最新版本时,即使他们在“ReferencedAssemblies”中有 DLL,它也不存在于 BIN 中并且他们必须重新添加它。
  • 好吧,抱歉。项目中配置的参考路径是什么?您希望它们指向“ReferencedAssemblies”文件夹而不是 bin 文件夹(或未设置为默认值)。这将告诉项目在编译项目时首先查看该文件夹。
  • 我在VS2010中找不到在哪里为网站项目设置参考路径?你能解释一下怎么做吗?谢谢。
  • 我们的机器上没有安装Web Site项目,只有Web Applications,但我觉得基本一样。右键单击项目,单击“属性”,然后应该出现一个标题为“参考”的选项卡。从那里您应该能够将路径添加到您的程序集。如果你找到了,请告诉我。
  • @ShaiCohen 网站没有项目文件,而项目文件是存储引用的地方,因此除非他们切换到使用 Web 应用程序项目而不是网站,否则这将不起作用。
【解决方案2】:

网站没有项目文件,您通常会在这些文件中找到引用,因此除了将程序集放在网站的 bin 或站点所在计算机的 GAC 中之外,您将无法引用程序集在跑。

您将在网站中找到对程序集的唯一引用是 web.config 中的添加程序集标记、页面和用户控件中的注册标记以及 licenses.licx 文件(如果您使用需要许可的控件)比如基础设施。

您的选择是将所有开发机器设置为已经拥有程序集或使用 WebApplicationProject 以便您可以添加包含程序集的文件夹并使用提示路径集或添加对项目的引用项目中设置的引用路径,以便 Visual Studio 可以找到程序集。

【讨论】:

    【解决方案3】:

    您可以将引用的 DLL 存储在源代码控制的“参考”目录中,然后将其相对路径放在网站 /bin 文件夹中的 [dll 名称].refresh 文件中。同时对 .refresh 文件进行源代码控制。

    每次 Visual Studio 编译您的 ASP.NET 网站时,它都会使用 .refresh 文件在“References”目录中查找 DLL 并将其复制到您的 /bin 文件夹中。

    例如,如果您的网站引用了 ThirdParty.dll,请像这样设置您的结构:

    \References
        \ThirdParty.dll
    \MySite
        \bin
           \ThirdParty.dll.refresh
    

    然后在 ThirdParty.dll.refresh 中有这一行

    ../../References/ThirdParty.dll
    

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 2010-11-17
      • 2011-07-11
      • 1970-01-01
      • 2016-05-12
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多