2009-03-27 7 views
2

NVelocity를 초기화 할 수 없습니다. 나는 복잡한 일을하려고하지는 않는다. 그래서 기본값으로 초기화하면 문제가 없지만 그렇게하지는 않는다.어떻게 NVelocity를 올바르게 초기화 할 수 있습니까?

이 :에

VelocityEngine velocity = new VelocityEngine(); 
ExtendedProperties props = new ExtendedProperties(); 
velocity.Init(props); 

결과 : "아무 클래스는 ResourceManager에로 지정되지 않았 음을 나타납니다 ..."

그래서이 수행합니다

VelocityEngine velocity = new VelocityEngine(); 
velocity.Init(); 

내가 소중한 찾을 수 있습니다 속성이 무엇인지에 대한 문서가 없으며 단순 기본값으로 초기화하는 방법도 없습니다. 누구든지 자원을 가리킬 수 있습니까?

페이지의 많은 해당 페이지로 가리 키 :

http://www.castleproject.org/others/nvelocity/usingit.html

는하지만이 페이지는 (겉으로는) 가장 중요한 점 건너 뜁니다 - 어떻게 속성을 설정하는 그들에게를 설정하는 것.

파일에서 간단한 템플릿을로드하고 싶습니다.

답변

2

는 여기에 내가 발견 기능 -

나는 내가 죽은 프로젝트의 생각 2003 년 이후 업데이 트를 가지고 있지 않은 원래 NVelocity 라이브러리를 사용하고 있었다.

캐슬 프로젝트 버전으로 전환 했으므로 훨씬 쉽습니다. 실제로 링크 된 페이지의 예와 비슷합니다. 그것은 속성에 대한 지능형 기본값을 설정하는 것 같습니다. 속성을 설정하지 않고 초기화 할 수 있지만 템플릿 디렉토리의 기본값은 "."입니다. 따라서 일반적으로 설정합니다 (전에 "init"을 실행하기 전에).

올바른 DLL을 얻으려면 최신 NVelocity 버전을 다운로드해야합니다 (이 글은 1.1입니다).

Castle Project Download Page

0

당신은 어셈블리에 다음 파일을 포함, 자신의 유형이 다음

src\Runtime\Resource\Loader\ResourceLocator.cs 
ResourceLocator

에 의해 발견 될 것이다 "자원"

src\Runtime\Defaults\directive.properties 

src\Runtime\Defaults\nvelocity.properties 

로 설정되어 있는지 확인해야

Dvsl을 실행할 때와 마찬가지로 GetManifestResourceNames()에서 예외가 발생하면 ResourceLocator 생성자를 ca로 수정하십시오. tch를 사용하고 필요한 파일이 로컬 어셈블리에 있으므로 (위에서 포함 한 경우) 오류를 무시하고 외부 어셈블리에서만 예외가 throw됩니다 (이유는 알 수 없음).

foreach(Assembly a in assemblies) { 
     String prefix = a.FullName.Substring(0,a.FullName.IndexOf(",")).ToLower(); 
     try 
     { 
      String[] names = a.GetManifestResourceNames(); 
      foreach (String s in names) 
      { 
       if (s.ToLower().Equals(fn) || s.ToLower().Equals(prefix + "." + fn)) 
       { 
        this.filename = s; 
        assembly = a; 
        isResource = true; 
       } 
      } 
     } catch { 
     } 
    } 
관련 문제