在一个新的使用Razor页面的aspnet Core Web项目中,我将脚手架模板复制到了准备修改它们的项目中,并运行以下命令来执行Razorpage脚手架:
dotnet aspnet-codegenerator razorpage -p MyProject.Web -m MyEntity -dc MyDbContext -udl -outDir Areas\MyArea\Pages\MyEntities --referenceScriptLibraries --force --no-build
为了使模板更聪明,我尝试引用一些我在项目的类中编写的代码。但是,当模板运行时,我只会收到以下错误:
错误CS0234:名称空间“ MyProject”中不存在类型或名称空间名称“ Web”(您是否缺少程序集引用?)
这使我相信执行模板的环境/ AppDomain没有加载该项目。但是,它必须这样做,因为它知道DbContext。我通过在模板正常工作时将其添加到模板中来证明这一点:
<ul>
@{
foreach (var an in AppDomain.CurrentDomain.GetAssemblies())
{
<li>@an.FullName</li>
}
@Coin.Web.Templates.SiteMap.GetStringValue()
}
</ul>
这段代码将所有程序集渲染到视图中,并且MyProject.Web
在其中。
这甚至是受支持的东西吗?如果可以的话,我想避免在实际模板文件中重复这些“聪明的”代码。