1

私のソリューションには、相互に内部参照を持つ複数のプロジェクトがあります。プロジェクト名 DataAccess は Objects プロジェクトを参照します。私の NANT スクリプトでは、最初に成功した Objects フォルダーをコンパイルし、次に DataAccess プロジェクトをコンパイルしようとすると、以下のようなアセンブリ参照エラーが発生します。

エラー CS0246: 型または名前空間名 'CustomerProfile' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

CustomerProfile クラスは Objects プロジェクトの一部であり、以下に示すように NANT の参照について明確に言及しています。

<csc target="library" output="${OutputFolder}\bin\Objects.dll" debug="${debug}">
    <references />
    <sources basedir="${SourceCodeFolder}">
        <include name="Objects\\**\*.cs" />
    </sources>
</csc>
<csc target="library" output="${OutputFolder}\bin\DataAccess.dll" debug="${debug}" >
    <references>
        <lib>
            <include name="${OutputFolder}\bin" />
        </lib>
        <include name="Objects.dll" />
    </references>
    <sources basedir="${SourceCodeFolder}">
        <include name="DataAccess\\**\*.cs" />
    </sources>
</csc>  

<include name="Objects.dll" />奇妙なことに、参照セクションからを削除すると、以下のエラーが発生します。

エラー CS0234: 型または名前空間名 'Objects' が名前空間 '' に存在しません (アセンブリ参照がありませんか?)

これにより、上記のコード スニペットで示した方法でアセンブリ参照を指定する必要があることが確認されます。しかし、アセンブリ参照が正しく行われている場合、そのアセンブリ内のクラス ('CustomerProfile') が取得されないのはなぜなのか理解できません。

誰でも助けてもらえますか?

4

1 に答える 1

0

元同僚の助けを借りて問題を解決しました。参照セクションでは、dll へのフル パスを記載する必要があります。修正後のコード スニペットの下。

<csc target="library" output="${OutputFolder}\bin\DataAccess.dll" debug="${debug}" >
    <references>
        <include name="${OutputFolder}\bin\Objects.dll" />
    </references>
    <sources basedir="${SourceCodeFolder}">
        <include name="DataAccess\\**\*.cs" />
    </sources>
</csc>
于 2011-04-07T09:35:42.557 に答える