2011-01-05 43 views
0

我有以下類型(請參閱下面的代碼部分)。它被編譯,但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) 
    { 
    //.... 
    } 
} 
} 

回答

0

編譯器驗證這一點。這幾乎肯定意味着在運行時,當Regasm.exe加載程序集時,它不會加載您認爲它的程序集。自從使用GAC以來,有很多機會。這可以根據參考裝配體中的[AssemblyVersion]編號生成相關裝配體的舊版本。

使用Fuslogvw.exe解決此問題,記錄所有綁定。它向你展示每個組件來自哪裏。

通過避開這種麻煩而不是將您的程序集放入GAC。這是一個部署細節,不適合您的開發機器,其中彙編版本可以快速更改,特別是當您讓構建系統自動增加它們時。您可以通過使用Regasm.exe的/ codebase選項來實現。

+0

嗨,謝謝! Fuslogvw.exe說:操作成功。 – BKate 2011-01-07 11:23:44

+0

VisualStudio回饋了上述錯誤,因爲項目的「生成後事件命令行」包含RegAsm.exe。 – BKate 2011-01-07 11:39:08

+0

好的,現在我明白了!如果我在項目的「後生成事件命令行」中更改了gacutil和regasm的調用順序,它就起作用了! – BKate 2011-01-07 13:02:59

相關問題