다음 유형이 있습니다 (아래 코드 부분 참조). 컴파일하지만 RegAsm을 다음과 같은 오류를 제공한다 ". 어셈블리에서 형식 'MyAlgorithms.MyAlgorithm'메소드 'LoadContent' 'A'를 구현하지 않습니다"를RegAsm : 'LoadContent'형식의 'MyAlgorithms.MyAlgorithm'어셈블리에서 'A'에 구현이 없습니다.
은 어떤 생각이 왜 했습니까? 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 : \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \ v6.0A \ 빈 \를하여 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
프로젝트의 "빌드 후 이벤트 명령 줄"에 RegAsm.exe가 포함되어 있기 때문에 Visual Studio에서 언급 한 오류가 다시 나타납니다. – BKate
좋아, 이제 알았어! 프로젝트의 "빌드 후 이벤트 명령 줄"에서 gacutil 및 regasm의 호출 순서를 변경 한 경우 작동합니다! – BKate