次のタイプがあります(以下のコード部分を参照)。これはコンパイルされますが、RegAsm は次のエラーを返します。
理由はありますか?LoadContent() メソッドを実装しないと、コンパイルされません。
ここでほぼ同じ質問を見ました: TypeLoadException は「実装なし」と言っていますが、実装され ていますが、役に立ちませんでした。
A、B、および C プロジェクトは同じソリューション内にあり、ビルド順序は C、B、および A です。
すべてのプロジェクトの「ビルド後のイベント コマンド ライン」には、次の行が含まれます。
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" /u $(TargetPath)
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" $(TargetPath)
"c:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe" /u $(TargetName)
"c:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe" /if $(ターゲットパス)
したがって、プロジェクト A は適切なアセンブリを参照していると思います。
MyAlgorithmBase クラスに次を追加すると、問題が解決するのはなぜですか。
protected override void LoadContent(PersistenceReader リーダー) { }
ありがとう!
ケーテ
// C.dll from project C
namespace Microsoft.SqlServer.DataMining.PluginAlgorithms
{
public abstract class AlgorithmBase : IDisposable
{
//....
protected abstract void LoadContent(PersistenceReader reader);
}
}
//in B.dll from project B, refers C.dll
namespace AlgorithmCommons
{
public abstract class MyAlgorithmBase : AlgorithmBase
{
//....
// Why solves the problem if the next line is commented out?
// protected override void LoadContent(PersistenceReader reader) { }
}
}
//in A.dll from project A, refers B.dll and C.dll
namespace MyAlgorithms
{
public class MyAlgorithm : MyAlgorithmBase
{
protected override void LoadContent(PersistenceReader reader)
{
//....
}
}
}