2014-01-14 1 views
0

VS2012 및 T4 템플릿과 assemblies are supposed to be shadow copied을 사용하고 있습니다. 즉, 템플릿에서 어셈블리를 참조한 다음 해당 어셈블리를 다시 컴파일 할 수 있습니다. 그러나 이것은 단순히 나를 위해 작동하지 않습니다. 나는 그것을 할 때 내가 어셈블리를 다시하려고하면, 내가 얻을 같은 오류 :T4 템플릿 섀도 복사본이 작동하지 않습니다.

Unable to copy file "obj\Debug\xxx.dll" to "..\bin\xxx.dll". 
The process cannot access the file '..\bin\xxx.dll' because it is being used by another process. 

주위 유일한 방법은 비주얼 스튜디오를 다시 시작하는 것입니다, 이것은 내가 완전히 T4를 포기할 준비가 너무 지루 . 나는 무엇을 잘못 할 수 있 었는가?

+0

이 내용은 VS2012 SP1에 추가 된 것 같습니다. 어떤 버전을 사용하고 있습니까? – FuleSnabel

+0

저의 실수는 VS2010 SP1에 추가되었습니다. VS2012는 그것을 지원해야합니다. 당신은 그것을 reproes 샘플이 있습니까? – FuleSnabel

+0

@FuleSnabel : * 모든 실행 파일을 참조하는 모든 어셈블리 지시문이이 작업을 수행합니다. VS 파일을 잠그고 파일을 다시 컴파일하려고하면 파일을 쓸 수 없기 때문에 실패합니다. –

답변

0

그래서이 아직 정말 답이 아니라 희망

<#@ assembly name = "$(SolutionDir)\TestProj\bin\Debug\TestProj.dll"#> 
<#@ import namespace = "TestProj"#> 

namespace ConsoleApplication1 
{ 
    class <#=Testing.Name#> 
    { 

    } 
} 

는 TestProj로는 테스트 클래스를 포함 (난 당신이 VS2012를 실행 실현) 우리는 거기에 도착

테스트가 VS2013에서 다음을 실행

namespace TestProj 
{ 
    public static class Testing 
    { 
     public static string Name 
     { 
      get { return "Tester" ;} 
     } 
    } 
} 

이것은 VS2013에서 아주 잘 작동했으며 VS2012에서도 잘 작동했습니다. VS2를 설치하려고합니다. 012 내 컴퓨터 중 하나에 있지만 dll 보유하는 솔루션에서 뭔가가 아닌지 확인하기 위해 설치 간단한 샘플을 테스트 할 마음이 있습니까?

이 경우 당신은 당신이 여기에서 찾을 수 있습니다 프로젝트 파일에 관심이 : https://github.com/mrange/CodeStack/tree/master/q21118821

+0

시간을 갖고 다시보고 할 때 시도해 보겠습니다. 감사! –

0

내가 주변에 비슷한 문제를 작동합니다. T4 디자인 타임 템플릿은 Visual Studio의 동일한 프로세스에서 다른 앱 도메인에서 처리됩니다. 솔루션을 다시 빌드 할 때 Visual Studio는 참조 된 DLL을 바꾸려고 시도하며 아직 사용 중이기 때문에 대체 할 수 없습니다.

T4 템플릿이 처리되는 AppDomain을 삭제하여이 문제를 해결할 수 있습니다. msdn