一个项目中的模块可以与解决方案中的其他项目共享吗?如果是这样,如何让项目识别另一个项目中的声明?
背景故事是我继承了一堆 Visual Basic 代码,这对我来说是一种新语言,它有几个包含重复代码的项目的解决方案。例如,多个 WPF 应用程序项目在加载主窗口后调用子例程 CheckSize()。CheckSize() 子例程(主窗口的一个方法)在每个项目中重新实现。
作为第一步,为了简单起见,我尝试更改 CheckSize() 以获取一个窗口,并将其放入新共享项目中的模块中。新项目可以编译,但我无法让任何其他项目识别出 CheckSize() 已被声明。尽管每个项目都引用了新项目,但什么也没有。
我使用类而不是模块得到了相同的结果。该类是公共的,子例程是公共和共享的,并且该类被导入到任何使用 CheckSize() 的文件中,但没有骰子。
更新: 呸!创建共享项目时,我让它采用默认名称 (ClassLibrary1),然后在解决方案资源管理器中重命名它,这不会更新我的项目的应用程序部分中的根命名空间。呸!
为了完整起见,将其放入 dll 的另一种方法(如 F0r3v3r 的答案所述)是使用 Visual Studio 的代码共享功能 - 在解决方案资源管理器中,右键单击项目并选择“添加”>“现有项目”。然后,当您看到文件选择对话框时,单击“添加”上的下拉菜单并选择“添加为链接”。这具有将相同的源文件添加到两个项目的效果,而不是将其复制到第二个项目(如果您只需单击“添加”,就会发生这种情况)