【发布时间】:2010-09-10 10:28:13
【问题描述】:
假设您有一个包含两个网站项目的解决方案,即网站 A 和网站 B。现在在网站 A 的 App_Code 文件夹中,有一个在 ClassX.cs 文件中定义的类 X。如果网站 B 也需要访问 ClassX.cs,你会怎么做?
有没有办法在 App_Code 文件夹之间共享这个文件?假设将文件移动到公共库是不可能的。
【问题讨论】:
假设您有一个包含两个网站项目的解决方案,即网站 A 和网站 B。现在在网站 A 的 App_Code 文件夹中,有一个在 ClassX.cs 文件中定义的类 X。如果网站 B 也需要访问 ClassX.cs,你会怎么做?
有没有办法在 App_Code 文件夹之间共享这个文件?假设将文件移动到公共库是不可能的。
【问题讨论】:
具有“假设将文件移动到公共库是不可能的”的限制。您可以这样做的唯一方法是使用 NTFS 连接点实质上创建一个符号链接,以便在两个文件夹中拥有相同的 .cs 文件。
虽然这是一个糟糕的选择(出于版本控制的原因)...将其移至公共库是最佳选择。
这是关于 NTFS 连接点的 Wikipedia 条目 http://en.wikipedia.org/wiki/NTFS_junction_point
这是一个创建它们的工具 http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx
【讨论】:
我认为没有办法不将 ClassX 移动到新的代码库项目中。 .NET 要求程序集的所有依赖项与程序集本身或 GAC 存在于同一文件夹中,以便自动检测。
您可以尝试通过反射类手动加载程序集,尽管它有点笨拙。
最好的解决方案是,如果您有时间并愿意承担它,那就是采用 JRoppert 的解决方案,将其转移到 Web 应用程序项目中。然后,您可以使用 Web 引用(与 VS 中的常规引用一样好)来引用 ClassX。
HTH
【讨论】:
将您的共享类打包到一个库(DLL)中,然后从每个站点右键单击添加引用并选择您创建的库。
【讨论】:
请不要使用这些邪恶的网站项目。改用 Web 应用程序项目,将您的共享类打包到一个库项目中,并从您的所有 Web 应用程序中引用它。
【讨论】: