2

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

ただし、このページでは、(一見)最も重要なポイントであるプロパティの設定方法と設定方法をスキップしています。

ファイルから単純なテンプレートをロードしたいだけです。

4

2 に答える 2

2

ここで私が見つけたのは -

私は元の NVelocity ライブラリを使用していましたが、これは 2003 年から更新されていません。これは、死んでいるプロジェクトだと思います。

Castle Project バージョンに切り替えたところ、はるかに簡単になりました。実際、リンク先のページの例とほとんど同じように動作します。プロパティのインテリジェントなデフォルトを設定しているようです。プロパティを設定せずに初期化できますが、テンプレート ディレクトリのデフォルトは "." なので、通常はそれを設定します ( "init" を実行する前に行います)。

正しい DLL を入手するには、最新の NVelocity リリースをダウンロードする必要があります (この記事の執筆時点では 1.1 です)。

キャッスルプロジェクト ダウンロードページ

于 2009-03-29T05:33:19.337 に答える
0

アセンブリに次のファイルを含める必要があり、それらのタイプが「リソース」に設定されていることを確認してください

src\Runtime\Defaults\directive.properties

src\Runtime\Defaults\nvelocity.properties

これらは ResourceLocator によって検出されます。

src\Runtime\Resource\Loader\ResourceLocator.cs

GetManifestResourceNames()Dvsl を実行しようとしたときに行ったように例外が発生した場合は、ResourceLocator コンストラクターを変更してエラーをキャッチして無視してみてください。外部アセンブリ(理由はわかりません)。

    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 {
        }
  }
于 2012-06-11T12:00:30.727 に答える