У меня есть следующие типы (см. Часть кода ниже). Она составлена, но Regasm дает следующее сообщение об ошибке: «Method„LoadContent“в типа „MyAlgorithms.MyAlgorithm“из сборки„A“не имеет реализации»RegAsm: Метод «LoadContent» в типе «MyAlgorithms.MyAlgorithm» из сборки «A» не имеет реализации
имеет какие-либо идеи, почему? Если бы я не реализовал метод LoadContent(), он не был бы скомпилирован.
я видел почти такой же вопрос, здесь: TypeLoadException says 'no implementation', but it is implemented , но это не помогло, потому что:
A, B и C проекты находятся в том же растворе, и порядок сборки C, B и А .
"после сборки командной строки событие" всех проектов содержит следующие строки:
"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 SDK \ Windows \ v6.0A \ bin \ gacutil.exe "/ и $ (Имя_целевого_объекта)
"C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Bin \ Gacutil.exe"/, если $ (TargetPath)
Так что я думаю, что проект относится на правильные сборки.
И почему решает эту проблему, если я добавил к MyAlgorithmBase класса следующего:
защищены переопределения недействительным LoadContent (PersistenceReader читателя) {}
Спасибо!
Käte
// 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
VisualStudio возвращает указанную ошибку, поскольку «Командная строка события после сборки» содержит RegAsm.exe. – BKate
Хорошо, теперь я вижу! Если я изменил порядок вызова gacutil и regasm в «Командной строке события после сборки» проекта, он работает! – BKate