2012-11-13 2 views
1

Visual Studio 2012에서 T4 도구를 사용하는 데 문제가 있습니다. .tt- 파일에는 동일한 솔루션에 빌드 된 64 비트 .DLL에 대한 어셈블리 지시문이 있습니다. 어셈블리 참조 '$ (TARGETDIR) \ DCSGenerator.dll'를 해결하는 동안 호스트는 예외가 발생했습니다Visual Studio 2012 .NET 4.5의 T4 어셈블리 참조

오류 308 :이 TT 파일을 디버깅의 출력이다. 변환 은 실행되지 않습니다. 다음 예외가 throw되었습니다. System.IO.FileLoadException : 주어진 어셈블리 이름 또는 코드베이스가 입니다. (HRESULT에서 예외 : 0x80131047) System.Reflection.AssemblyName.nInit에서 (RuntimeAssembly & 조립체 부울 forIntrospection 부울 raiseResolveEvent) Microsoft.VisualStudio.TextTemplating에서 System.Reflection.AssemblyName..ctor에서 (문자열의 AssemblyName). Microsoft.VisualStudio.TextTemplating.Engine.ResolveAssemblyReferences에서 Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolveAssemblyReference에서 GlobalAssemblyCacheHelper.GetLocation (문자열 는 StrongName) (문자열 assemblyReference) (ITextTemplatingEngineHost 호스트, TemplateProcessingSession 세션) C : \ TFS \ Dev01 \ CorePlatform \ CoreServices \ ImportExport.NET \ ImportExport.N ET \ DicomInterface \ TemplateUtilFunctions.tt 0 0 ImportExport.NET (CoreServices에 \ ImportExport.NET \ ImportExport.NET)이와

다른 사람이 데 문제가 있습니까?

최고 감사합니다,

UPDATE 2012년 11월 14일 09:17 (CET) : Visual Studio 및 따라서 T4 발생기는 32 비트 응용 프로그램으로 실행하고 내 어셈블리는 64 비트 DLL을 같이 내장되어 있습니다. 이것은 문제의 원인 일 수 있습니다.

업데이트 2012-11-14 09:43 (CET) : 전체 경로를 사용하여 어셈블리를 참조하려고 시도했지만 문제가 해결되지 않았습니다.

+1

VS가 32 비트로 실행되므로 참조되는 DLL에 '모든 CPU'가 표시되지 않지만 64 비트 아치가 필요하면 VS로 호스트되는 T4 라이브러리는 DLL을로드 할 수 없습니다 (32 비트 프로세스는 64 비트 DLL을로드 할 수 없으며 그 반대도 마찬가지입니다) – FuleSnabel

+0

나는 인터넷에서 비슷한 probems를 찾은 후에 이것을 의심했다. 필자는 추측 할 수있는 솔루션 제약 때문에 대상 플랫폼을 32/64 비트로 전환하지 못했습니다. 그러나 나는이 단서를 따라갈 것입니다. 감사! – qstebom

+0

'$ (TargetDir) \ DCSGenerator.dll'예외가 일반적으로 예외가 원본이 아닌 파생 된 경로를 보여주기 때문에 이상하게 보입니다. 하드 코드 전체 경로를 사용해보십시오. –

답변

0

의심 스럽지만이 문제는 PlatformTarget AnyCPU으로 종속성 어셈블리를 작성하여 해결되었습니다. 이제 생성 된 DLL은 32 비트 및 64 비트 어셈블리와 호환됩니다.