내 제품으로 Microsoft T4 엔진을 재분배 할 수 있습니까? [닫은

StackOverflow https://stackoverflow.com/questions/443027

  •  22-07-2019
  •  | 
  •  

문제

현재 String.format 및 Embedding Placeholders를 사용하여 코드를 동적으로 생성하고 있지만 템플릿으로 사용하기 위해 C# 코드를 재구성하는 것은 고통이며 T4 템플릿을 사용하는 것이 더 나을 것이라고 생각합니다.

그러나 코드 생성은 실행중인 시스템에서 발생할 것이므로 Microsoft T4 엔진을 내 제품으로 안전하고 법적으로 재분배 할 수 있음을 알아야합니다.

다른 사람 이이 일을 했습니까? 아니면 (법적) 답변을 알고 있습니까?

도움이 되었습니까?

해결책

곧 또 다른 옵션이있을 것 같습니다.

어제 Miguel de Icaza는 Monodevelop에 T4 통합에 대해 게시 했으므로 지금은 모노 동등한 T4 도구 세트가있을 것으로 기대합니다.

보다: http://tirania.org/blog/archive/2009/mar-10.html

다른 팁

T4를 일부로 재분배 할 수 있습니다 dsltoolsredist, 그러나 이미 설치하려면 Visual Studio 2005 Standard Edition 이상이 필요합니다. 나는 현재 T4가 현재 시각적 스튜디오없이 법적으로 재분배 될 수 있다고 생각하지 않습니다. 당신이 설명한 시나리오는입니다 Visual Studio 2010에서 직접 지원됩니다

나는 대답을 가지고 있지만 불행히도 Oleg가 제안한 것처럼 그것은 아닙니다. (T4에 대한 훌륭한 일 Oleg). 현재 T4를 재분배 할 수 없습니다. VS의 일부입니다. VS2010에서는 T4 템플릿을 사전 컴파일 한 다음 T4 의존성이없는 애플리케이션으로 사전 컴파일 된 템플릿을 재분배 할 수 있습니다.

명확성을 위해 공식적인 답변은 Microsoft T4 엔진을 Visual Studio와 별도로 배포 할 수 없다는 것입니다.

그러나 Visual Studio 2010을 기준으로 Visual Studio에 의존하지 않는 사전 컴파일 된 템플릿을 사용하고 재배포 할 수 있습니다.

Visual Studio가 설치된 컴퓨터에서 Visual Studio 외부 T4를 사용할 수도 있습니다.

또한 Visual Studio 분리 쉘을 무료로 라이센스 및 재분배하고 도구의 호스트로 사용할 수 있습니다. T4가 포함됩니다.

Visual Studio 2010 SP1에서 귀하는 VS Install Directory의 BuildServer.txt의 라이센스를 통해 T4를 빌드 머신에 복사 할 수있는 라이센스가 부여됩니다.

VS2008이 나오기 전부터 별도의 appDomain으로 코드를 컴파일하는 나만의 템플릿 코드 생성기 시스템이 있습니다.

관심이 있으시면 의견을 게시하면 코드에 URL을 게시하겠습니다.

내 템플릿 엔진을 사용하는 코드는 다음과 같습니다 여기, 웹 브라우저 또는 포인트로 찾아 볼 수 있습니다. 파괴 그것에 클라이언트. 여기에서 시작하는 링크는 실제로 단어 후에 중지되지만 서버 측 WMD 렌더러는 다음 텍스트에 링크를 누출합니다.

해당 네임 스페이스에서 단일 파일을 복사하면 자체적으로 컴파일하지 않으면 LVK.DELEGATES 및 LVK.SCRIPTING의 일부 사항이 필요합니다. 네임 스페이스는 위의 링크에서 몇 레벨을 높입니다. 라이브러리 전체를 빨고 싶지 않다면 컴파일 될 때까지 한 번에 한 번에 한 번에 불평하는 조각을 추출해야합니다.

라이브러리의 이진 버전도 있습니다. /lvk_3_5/트렁크/이진/디버그/LVK 같은 저장소에서. 다운로드하면 참조를 추가하고 클래스를 확인하는 것만 큼 간단합니다. lvk.text.templates.textTemplate.

불행히도 나는 현재 내 도서관에 대한 사례가 없습니다.

기본적으로 템플릿을 사용하려면 :

TextTemplate tt = new TextTemplate();
tt.Source = "... code here, check example file above ...";
tt.Compile();
String output = tt.Generate(singleObjectParameter);

기본적으로 단일 방법으로 삽입되는 모든 코드 인 템플릿 내부 (즉 데이터 객체는 데이터라는 매개 변수로 전달되었습니다.

따라서 전달 된 매개 변수의 내용을 출력하려면 다음과 같습니다.

<%= data %>

반복하려면 :

<% for (Int32 index = 0; index < 10; index++) { %>
<%= data %>
<% } %>

궁금한 점이 있으면 내 이메일로 lasse@vkarlsen.no로 보내십시오.

나는 이것이 2006 년에 다시 나타 났다고 기억했다 (T4가 무엇인지 알기 전에!) http://social.msdn.microsoft.com/forums/en-us/vsx/thread/1ab0bf3f-2810-4adf-bf75-900b98dee8e2/ 불행히도 GotDotnet 링크가 고장났습니다. 그 실에서 whethere를 말하기는 까다 롭습니다. 그들은 당신이 vs의 t4 outsid와 재분배 될 것입니다.

정말 부끄러운 일이지만 Oleg가 지적했듯이 테스트되지 않은 경우 어떻게 해제 할 수 있습니까?

Lassevk는 확실히 관심이 있습니다. 약 10 년 전에 제작 한 템플릿 엔진을 다시 해치는 것에 대해 생각하고 있었지만 항상 더 쉬운 삶을 살고 있습니다!

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