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