1

MVC 4 スターター プロジェクトのプロジェクト テンプレートを作成しています。

通常のクラス ベースのコード ファイルでは、Visual Studio 用に次の構文を記述して$safeprojectname$、新しいプロジェクトの作成時にユーザーが最初に指定したプロジェクト名をこのワイルドカードに入力できます。

namespace $safeprojectname$.Models
{
    public class Class1
    {     
        public bool blah { get; set; }
    }
} 

ただし、私の問題は、どのビュー ファイル (*.cshtml) でも、これらのテンプレート ワイルドカードが単に評価されないことです。そのため、ワイルドカードの生のテキストは置き換えられるのではなく、マークアップに残り、プロジェクトの実行時にプリプロセッサ ロジックを爆撃します。

ビューファイルのコードがどのように見えるかの例。

@model $safeprojectname$.Models.NavigationBarModel

これに対する解決策はありますか?

4

1 に答える 1

1

私は最終的に、他のいくつかの落とし穴とともにこれを理解しました。

生成される .vstemplate ファイルは<ProjectItem>、エクスポートされたテンプレートに含まれる各リソースの要素を作成します。

ビューのReplaceParameters属性は手動で true に設定する必要があり、デフォルトでは false に設定されています。

<Folder Name="Shared" TargetFolderName="Shared">
  <ProjectItem ReplaceParameters="true" TargetFileName="_Layout.cshtml">_Layout.cshtml</ProjectItem>
  <ProjectItem ReplaceParameters="true" TargetFileName="_LoginPartial.cshtml">_LoginPartial.cshtml</ProjectItem>
  <ProjectItem ReplaceParameters="true" TargetFileName="_NavigationBar.cshtml">_NavigationBar.cshtml</ProjectItem>
  <ProjectItem ReplaceParameters="true" TargetFileName="Error.cshtml">Error.cshtml</ProjectItem>
</Folder>
于 2013-03-28T20:05:02.263 に答える