2017-12-20 19 views
0

다른 .NET 어셈블리 용 .NET Standard 2.0 라이브러리로 사용하고 네이티브 코드 용 COM 구성 요소로 사용하려는 C# 프로젝트가 있습니다. 나는 전체 .NET 프레임 워크를 대상으로 할 때 나는 잘 COM 개체를 만들 수 있습니다,하지만 난 .NET 표준을 대상으로 새 프로젝트를 만들 때 내가 그것을 등록하려고 할 때,이 오류가 발생했습니다 :regasm netstandard DLL

regasm /codebase /tlb MyLib.dll 

RegAsm을을 : 오류 RA0000 : 파일 또는 어셈블리 'netstandard, 버전 = 2.0.0.0, 문화 = 중립, PublicKeyToken = cc7b13ffcd2ddd51'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.

.NET Standard 및 COM과 호환되는 DLL을 어떻게 만들고 등록 할 수 있습니까?

+0

문제를 재현 할 수 없습니다. .netstandard ClassLibrary를 처음부터 빌드하고'C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ regasm classlibrary1.dll/tlb/codebase'을 실행하면 잘 동작합니다. VS 201715.5.2 (최신 버전)입니다. –

+1

Regasm.exe는 GAC에서 종속 어셈블리를 찾습니다. 거기에 있는지 확인하십시오. C : \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ netstandard \ v4.0_2.0.0.0__cc7b13ffcd2ddd51 디렉터리에 있습니다. 필요한 경우 .NET 4.7.1로 업데이트하십시오. –

답변

0

.NET 4.7.1이 설치되어 있는지 확인하십시오. 그렇더라도 Visual Studio는 출력 디렉토리에 NuGet 패키지를 복사하지 않기 때문에 유사한 "파일 또는 어셈블리를로드 할 수 없습니다"오류가 발생할 것으로 예상됩니다.

당신이 하나의 프로젝트 만 두 개의 DLL 함께 살 수 있다면

,이 대안은 다음과 같습니다

: 코드 예를 들어, 필요한 사항에 따라, 당신의 .csproj에서 TargetFramework 줄을 제거하고 여러 대상으로 교체
<TargetFrameworks>netstandard2.0;net461</TargetFrameworks> 

그런 다음 .NET에서 사용하기 위해 net461 DLL을 사용하고 .NET에서 사용하려면 netstandard2.0을 사용하십시오.

+0

Hans Passant에게 .NET 4.7.1에 대한 포인터를 보내 주셔서 감사합니다. –