2012-03-12 6 views
2

VBプロジェクトを2つのプロジェクトにリファクタリングしています.1つは、将来のプロジェクトと共有したいユーティリティライブラリです。ソリューションのレイアウトは次のようになります。別のvb.netプロジェクトで関数とクラスを使用する

Solution 
|_ util 
    |_ util.vb 
|_ main project 
    |_ (main project files) 

utilはクラスライブラリとして作成され、メンバーファイルが追加されます。私はその後、メインプロジェクトのリファレンスにutilを追加しました。しかし、私は私のメインのプロジェクトファイルからutil.vb内の関数を呼び出すようにしようとすると、私はこのようなビルドエラーを取得:

error BC30451: Name 'LogException' is not declared. 
error BC30002: Type 'VarFile' is not defined. 

をこれらはutil.vbで定義されている、そしてそれはの一部であったとき、それが正常にコンパイルメインプロジェクト宣言は次のようになります。(私は詳細をトリミングしました)

Imports System.IO 

Public Module utils 

    Public Sub LogException(ByRef ex As Exception, Optional ByVal logFile As String = "", Optional ByVal logFolder As String = "") 
' ... 
    End Sub  

    Public Class VarFile 
      ' ... 
    End Class 
End Module 

私はメインのプロジェクトに「リンクとして」util.vbを追加することができ、それがすべてのビルドエラーを解決しますが、それは敗北に思えますクラスライブラリをリファクタリングする目的 - 私はこのライブラリを別途開発したいと思います。メインプロジェクトで追加していないファイルリンクを常に把握する必要はありません。これよりも良い方法がありますか?

+2

dllプロジェクトを作成してライブラリとして作成し、メインプロジェクトから参照を追加します。これらはすべて1つの解決策になります。ビルドオーダーも設定します。 'Imports'を使用して、' Imports System.IO'と同様の機能を使用してください。 – kbvishnu

+0

@Harie:これはうまくいきました。私は輸入声明を紛失していただけです):あなたのコメントを回答として再提出してください。ありがとう! –

+0

@martin_ljcan :) – kbvishnu

答えて

3

dllプロジェクトを作成してライブラリとして作成し、メインプロジェクトから参照を追加します。これらはすべて1つの解決策になります。ビルドオーダーも設定します。 Importsと同様の機能を使用するにはImports System.IO

1

あなたが探しているメカニズムは参考文献です。メインプロジェクトを右クリックし、[参照の追加]を選択し、[プロジェクト]タブからUtilプロジェクトを選択します。 その後、新しいUtilプロジェクトはMainとは異なる名前空間にあるので、Imports宣言を追加することを忘れないでください。

+0

私はそれを正確に行いました。同じコンパイルエラーが表示されます。これは実際にファイルリンクメソッドを試してくれました。 –

関連する問題