【问题标题】:Using the same App_Code classes across websites跨网站使用相同的 App_Code 类
【发布时间】:2010-09-10 10:28:13
【问题描述】:

假设您有一个包含两个网站项目的解决方案,即网站 A 和网站 B。现在在网站 A 的 App_Code 文件夹中,有一个在 ClassX.cs 文件中定义的类 X。如果网站 B 也需要访问 ClassX.cs,你会怎么做?

有没有办法在 App_Code 文件夹之间共享这个文件?假设将文件移动到公共库是不可能的。

【问题讨论】:

    标签: asp.net app-code


    【解决方案1】:

    具有“假设将文件移动到公共库是不可能的”的限制。您可以这样做的唯一方法是使用 NTFS 连接点实质上创建一个符号链接,以便在两个文件夹中拥有相同的 .cs 文件。

    虽然这是一个糟糕的选择(出于版本控制的原因)...将其移至公共库是最佳选择。

    这是关于 NTFS 连接点的 Wikipedia 条目 http://en.wikipedia.org/wiki/NTFS_junction_point

    这是一个创建它们的工具 http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx

    【讨论】:

    • 我已经尝试让它工作 2 年了(版本控制在我从事的项目中不是问题)。我从来不知道Junctions。非常感谢!
    【解决方案2】:

    我认为没有办法不将 ClassX 移动到新的代码库项目中。 .NET 要求程序集的所有依赖项与程序集本身或 GAC 存在于同一文件夹中,以便自动检测。

    您可以尝试通过反射类手动加载程序集,尽管它有点笨拙。

    最好的解决方案是,如果您有时间并愿意承担它,那就是采用 JRoppert 的解决方案,将其转移到 Web 应用程序项目中。然后,您可以使用 Web 引用(与 VS 中的常规引用一样好)来引用 ClassX。

    HTH

    【讨论】:

      【解决方案3】:

      将您的共享类打包到一个库(DLL)中,然后从每个站点右键单击添加引用并选择您创建的库。

      【讨论】:

        【解决方案4】:

        请不要使用这些邪恶的网站项目。改用 Web 应用程序项目,将您的共享类打包到一个库项目中,并从您的所有 Web 应用程序中引用它。

        【讨论】:

        • “邪恶”是一个相当强烈的词。使用网站模型是有正当理由的。并非每个 Web 应用程序都是三环境托管部署的企业应用程序。
        • 我没有看到任何使用网站项目的理由。我认为网络应用程序在使用开发过程、构建过程、QA、共享开发等方面更专业。您使用网站项目的原因是什么?是的,“邪恶”可能有点强 - 但只有一点......
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-30
        • 2021-07-09
        • 2021-12-04
        • 1970-01-01
        • 2016-03-15
        相关资源
        最近更新 更多