我有以下類型(請參閱下面的代碼部分)。它被編譯,但RegAsm提供了以下錯誤:「方法類型‘MyAlgorithms.MyAlgorithm’自組裝‘LoadContent’‘A’沒有實現」RegAsm:從程序集'A'類型爲'MyAlgorithms.MyAlgorithm'的方法'LoadContent'沒有實現
有任何想法,爲什麼?如果我不實現LoadContent()方法,它不會被編譯。
我看到了幾乎同樣的問題,在這裏: TypeLoadException says 'no implementation', but it is implemented ,但它並沒有幫助,因爲:
A,B和C項目在同一個解決方案,並構建順序是C,B和A 。
所有項目的「生成後事件命令行」 包含了下一行:
「C:\ WINDOWS \ Microsoft.NET \框架\ 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文件\微軟的SDK \的Windows \ v6.0A \ BIN \的Gacutil.exe「/如果$(TARGETPATH)
所以我認爲項目A指到正確的組件。
如果我加入MyAlgorithmBase類下一爲什麼解決了這個問題:
保護覆蓋無效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)
{
//....
}
}
}
嗨,謝謝! Fuslogvw.exe說:操作成功。 – BKate 2011-01-07 11:23:44
VisualStudio回饋了上述錯誤,因爲項目的「生成後事件命令行」包含RegAsm.exe。 – BKate 2011-01-07 11:39:08
好的,現在我明白了!如果我在項目的「後生成事件命令行」中更改了gacutil和regasm的調用順序,它就起作用了! – BKate 2011-01-07 13:02:59