2009-06-19 7 views
1

レポートサービス(2008)レポートでカスタムアセンブリへの参照を追加しました。私は、テキストボックス(例えば、= Assembly.Class.Function())から呼び出したときにそれは素晴らしい作品が、私は、カスタムコードブロックでそれをラップする場合:レポートサービスのレポートからC#アセンブリを呼び出す

Function GetString(ByVal key as String) as String 

return Willow.Reporting.Localization.Resource.Get(User!Language, "WAR", "Title", key) 

end function 

私は非のビルドエラー」の参照を取得します-sharedメンバにはオブジェクト参照が必要です。 "

C#クラスと関数は静的です。

をテストとして作成し、クラスの非静的vrsionを作成し、インスタンスを作成し、カスタムコードのインスタンス名を使用してアクセスしました。

レポートサービスのコードブロックからカスタムアセンブリを呼び出すことは可能ですか?

答えて

0

VS IDEは負荷に、一度だけアセンブリをロードする - あなたはVSに再度開くことができますあなたがアセンブリの変更を加えるたびに(参照を削除し、再設定はどちらか動作しませんでした)

を閉じる/しなければなりません静的呼び出しとインスタンスメソッドの両方を使用してください。埋め込みコードからうまく機能します。たとえば、

Function Test() as String 
    return Instance.GetString() 
End Function 

Function Test2() as String 
    return WR.StaticTest.GetString() 
End Function 
0

おそらくあなたはC#プログラマーですか? VBの "Shared"は静的を意味します。メッセージは、クラスの(インスタンス)メソッドを呼び出すためにクラスのインスタンスを作成する必要があることを意味します。

+0

上記のように、どちらもうまくいきません。インスタンスを作成すると、同じメッセージが表示されます。 静的メソッドを呼び出すことも、インスタンスを介して呼び出すことも、カスタムコードウィンドウのラッパー関数を介さずに、texboxレベルで正常に動作します。 – ericvg

+0

「インスタンス」コードと、受け取ったエラーメッセージまたは例外を表示してください。私はあなたが同じエラーを起こすと信じることは非常に難しいと思っています。あるいは、「共有」が当てはまらないときは「共有」と言っても間違いがあります。また、私は確かではないが、おそらくあなたの "インスタンス"への変更は見られず、SSRSはまだ古いバージョンを使用していた。 –

+0

閉鎖/再開VSはトリックを行いました - ideはロード時にアセンブリを一度だけロードします。静的およびクラスの両方のインスタンスは、文字列 \tリターンWR.StaticTest.GetString(など文字列 \tリターンInstance.GetString() エンド機能 機能TestStatic()など)(,:例えば、 機能TestInstanceをembdededコードから正常に動作します) End Function – ericvg

関連する問題