문제

DSL 도구 솔루션이 있습니다.

이 프로젝트에 대한 약한 언급을 추가해야합니다. DSL Tools Project DLL의 이름이 높기 때문에 약한 DLL을 사용할 수 없습니다.

나는 그것을 다시 컴파일 할 수 없기 때문에 DLL을 강하게 명명 할 수 없다.

DSL 도구 DLL을 DSL 및 DSLPackage 프로젝트 속성으로 이동하여 약한 이름을 지정하고 시그닝 탭에서 "어셈블리 서명"옵션을 확인하지 않았습니다.

그런 다음 컴파일합니다. 오류 목록은 다음 오류를 나타냅니다

"gacutil.exe" exited with code 1

VS2005 출력 창을보고 Gacutil이

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\gacutil.exe -nologo -i "C:\Academy\ResearchAndDevelopment\FrontendGenerator\DslPackage\bin\Debug\vantyx.FEGenerator.DslPackage.dll"

그 후 명령 프롬프트를 사용하고 gacutil.exe 오류가 다음과 같이 표시되었습니다.

Z:\>"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\gacutil.exe" -nologo -i "C:\Academy\ResearchAndDevelopment\FrontendGenerator\DslPackage\bin\Debug\vantyx.FEGenerator.DslPackage.dll"
Failure adding assembly to the cache: Attempt to install an assembly without a strong name

Gacutil.exe가 왜 그리고 어떻게 부름을 받고 있는지 모르겠습니다. 프로젝트와 솔루션 속성을 살펴 보았으며 gacutil.exe를 호출하도록 구성된 옵션이 없습니다. 나는 "gacutil.exe"의 모든 파일을 살펴 보았지만 아무것도 찾지 못했습니다.

내가 정말로 원하는 것은 내가 명령 할 수없는 약한 DLL을 사용할 수 있다는 것입니다. 결과적으로 DSL 도구 DLL을 약한 이름으로 만들려고했지만 할 수는 없습니다.

이 작업을 해결할 수있는 방법에 대한 도움이 있습니까?

미리 감사드립니다. Luís Filipe

도움이 되었습니까?

해결책

반사와 함께 런타임 바인딩을 사용하는 것은 좋은 솔루션이며 작동합니다. 그 외에 내가 구현 한 다른 솔루션은 별도의 앱 도메인을 시작하고 해당 AppDomain이 조립품을로드하고 원하는 방법을 실행하도록하는 것입니다. 이 접근법의 단점은 추가 복잡성과 성능입니다. 실제로 Visual Studio의 프로세스 공간에서 별도의 .NET 애플리케이션을 시작하는 것처럼 그가 무엇을하고 있는지 알아야합니다. 거꾸로 된 것은 약간의주의를 기울이면 유형의 안전을 끝까지 얻을 수 있다는 것입니다.

다른 팁

위에 쓰여진 답변을 제외하고는 Visual Studio의 모든 추가 기능이 강력해야합니다.

런타임에 어셈블리를로드하고 반사를 사용하여 메소드를 호출하여 일부 문제를 해결할 수 있습니다.

안부, 루ís

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top