您可以从 class 库调用 visual studio 网站项目中的 class 吗?

Can you call a class in a visual studio website project from a class library?

我正在创建一个新的 VS2015 网络应用程序,但其中有一个需要一些已经存在于另一个系统中的报告。

另一个系统是一个 VS2013 解决方案,它有一个网站(不是 Web 应用程序)作为它的主要项目,以及许多 class 库。但是该网站直接包含一堆 classes 做报告和其他事情,我宁愿使用它们也不愿重新创建所有(非常复杂的)代码。

有什么方法可以从另一个项目或 class 库中引用网站中的 classes 吗?这是我正在维护的一个相当大的旧应用程序,如果不需要,我宁愿不尝试将所有这些功能提取到它自己的 class 库中。

如果那些 class 已经在单独的 class 库中,我可以很容易地引用它们,但不幸的是它们就在网站上,我找不到任何相关信息能够 link 它(大概是因为你不能)。

这是一个示例结构:

MySolution
    MyNewClassLibrary
        MyClass
        {
            MyReportFunction()
            {
                var x = new ReportClass();  // From website project
                x.CreateReportFunction();
            }
        }

OldSolution
    WebsiteProject
        ReportClass
        {
            CreateReportFunction()
            {
                // All the code I'd like to access
            ]
        }

这可能吗?还是我有很多重写工作要做?或者考虑将网站转换为 Web 应用程序是更好的主意吗?

您可以将那些现有的 类 作为链接 类 添加到您的解决方案中。

将现有项添加到项目

  1. 在解决方案资源管理器中,select 一个目标项目。
  2. 在“项目”菜单上,select 添加现有项。
  3. 在“添加现有项”对话框中,找到并select 要添加的项目项。
  4. 从“打开”按钮下拉列表中,select 添加为 Link。

您还可以阅读更多详细信息here

如果其他人正在寻找类似的东西,答案是否定的,这是不可能的。

我最终将所有功能都提取到一个新的 class 库项目中,这需要进行大量测试以确保我的所有细节都正确无误。

故事的寓意 - 第一次就正确构建您的软件,并将功能提取到可重用的对象中。不要用面向对象的语言进行过程式编程。