2017-03-15 4 views
0

VS2013 및 VS2015에서 수년간 일해온 디자인 타임 T4 템플릿이 있습니다.Visual Studio 2017에서 T4 어셈블리 지시문이 깨졌습니다.

VS2017에서 템플릿이 MissingMethodException과 함께 실행되지 않습니다. 해당 메서드는 사용자 지정 어셈블리 내에 있습니다. 어셈블리는 $ (SolutionDir) 매크로와 함께 절대 경로를 사용하여 참조됩니다. 예 :

나는이 문제를 디버깅하기 위해 퓨전 로그 뷰어를 사용 해왔다. 분명히 "my.dll"을 찾을 수 없습니다. 그리고 로그에 따르면 Visual Studio는 절대 경로를 찾고 있지 않습니다.

나는 이것이 T4VSHost 내의 버그라고 가정합니다. 이 문제를 해결하거나 해결할 방법이 있습니까?

+0

임시 해결책으로, my.dll을 $ (DevEnvDir)의 "my"하위 디렉토리에 배치합니다. 개인적으로, 나는 이것이 나쁜 습관이라고 생각한다. 그러나 퓨전은 이런 식으로 찾을 것입니다. 나는 그것을 더 어딘가에 위치시키고 퓨전에게 어디서 그것을 발견하도록 지시하고 싶다. –

+0

파일 경로 작업을 하드 코딩 할 수 있습니까? – qxg

+0

@qxg, 매크로 (또는 매크로 확장)에 문제가 있다고 제안 하시겠습니까? 분명히, 그것은 문제가 아닙니다. 이론을 테스트하기 위해 경로를 하드 코딩했습니다. –

답변

0

Visual Studio는 2017 이전 버전에서 현재 VS 세션에서 빌드 한 어셈블리를 잠급니다. 그래서 당신의 길은 비슷한 것처럼 보입니다.

<#@ assembly name="$(SolutionDir)SomeProjectFolder\bin\Debug\SomeAssembly.dll" #>

그런 다음 T4 엔진은 조립이 발견 될 수 없다는 예외가 발생합니다. 솔루션을 다시 시작한 다음 빌드하지 않고 T4 템플릿을 실행하면 올바르게 실행됩니다.

이렇게하면 주로 T4 템플릿에서 참조 용으로 의도 된 어셈블리에 대한 디버깅 또는 다른 작업을 수행합니다.

관련 문제