3

良い一日!

NuGet (2.6.64 からアップグレード) の 2.6.65 の最新の T4MVC を使用しています。

// If true, use lower case tokens in routes for the area, controller and action names
static bool UseLowercaseRoutes = true;

そして、エラーが発生しました:

The expression being assigned to '....' must be constant    ...\T4MVC.cs    

エラーをトリガーする生成コードは次のとおりです。

    [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
    public class ActionNameConstants {
        public const string Calc = ("Calc").ToLowerInvariant();
    }

これはバグですか?

4

1 に答える 1

2

あ、すみません、前の変更で壊れてしまいました。これに対処する T4MVC (2.6.66) の新しいビルドをプッシュしました。UseLowercaseRoutes が使用されている場合、基本的に定数トークンを生成しないため、これは回避策です。しかし、それで今のところはうまくいきます。

問題の根本は、C# が定数文字列での .ToLowerInvariant() の使用をサポートしていないことです。理想的には、コンパイル時にそれを評価するだけですが、それほどスマートではありません:)

于 2011-12-22T18:06:03.343 に答える