合并项目,如何访问主项目中的公共子项目

时间:2013-10-30 02:03:41

标签: vb.net visual-studio

我将VS 2012作为Windows表单应用程序的主项目和作为excel工作簿添加的项目。我在两个项目中都有一些完全相同的代码,因此我试图通过共享该代码来节省时间。

从我的excel项目中,我添加了对Windows窗体项目的引用并导入了命名空间。我可以访问我的主项目上的公共函数,但我似乎无法访问我的公共子项。

我还尝试创建一个模块,在项目之间添加一个链接,但这会导致我也在两个地方更新代码。此外,我认为创建链接也可能会在部署时引起一些问题。

例如,在我的Windows窗体项目中,我想要从我的第二个项目中访问以下内容

Public Sub closeXLApp()

    'This sub is called to close the application without
    'saving any changes to the workbook. The sub closes
    'the app, workbook and sheet and performs some garbage clean up
    'as well making sure that the opened Excel instance is cleared from memory.

    xlBook.Close(SaveChanges:=False)
    xlApp.Quit()

    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

    xlSheet = Nothing
    xlBook = Nothing
    xlApp = Nothing

    GC.Collect()

End Sub

在我的第二个项目中,我创建了一个引用并将命名空间导入为:

Imports Compensation_Template_Welcome_Page

所以当我尝试从我的第二个项目中访问上述公共子时:

Private Sub btnMinCloseProject_Click(sender As Object, e As EventArgs) Handles btnMinCloseProject.Click

    'This procedure runs when the btnMinCloseProject is clicked. The
    'procedure calls the function to close workbook without saving changes.

    closeXLApp()

End Sub

由于其保护级别,我收到一条错误消息,指出sub未声明或无法访问。

有没有更好的方法来实现这一目标?即使是一条较长的路线,我也希望它能够长期保持高效。

由于

1 个答案:

答案 0 :(得分:0)

你的子closeXLApp()不是静态的(共享的),所以你需要创建一个包含这个子的类的实例,然后调用sub。