继this question之后,我现在在我的asp.net核心应用程序中设置了预编译的视图,该应用程序使用
从命令行编译DLLdotnet razor-precompile
命令。然后我使用
将其打包为nuget包dotnet pack
并添加了包作为项目的引用,我已从中删除了视图。
然后我创建了一个实现myprogressview()
的新类,并在我的项目的 var count : Int = 0
func myprogressview(timer : Timer)
{
count += 1
if (count <= 10)
{
print(count*10)
progress.progress = Float(count)/10.0
progressLable.text = String.init(format: "%d %%", count*10)
} else {
timer.invalidate()
}
}
方法中进行设置,我可以看到它在我的新位置搜索视图。但是,我不知道要把什么作为预编译视图的搜索路径,因为那里没有.cshtml文件。我只是得到一个IViewLocationExpander
,但找不到视图。
之前有没有人这样做过,或者能够建议我如何将这些预编译的视图添加到搜索路径中?
由于
答案 0 :(得分:2)
我很惊讶,它直接以这种方式工作:
我刚刚在我的主项目中注册了custom ViewExpander:
services.AddMvc().AddRazorOptions(options =>
{
options.ViewLocationExpanders.Clear();
options.ViewLocationExpanders.Add(new TestViewLocationExpander());
};
扩张器本身:
public class TestViewLocationExpander : IViewLocationExpander
{
public void PopulateValues(ViewLocationExpanderContext context)
{
}
public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
if (viewLocations == null)
{
throw new ArgumentNullException(nameof(viewLocations));
}
yield return "~/Test/Test.cshtml";
}
}
然后我引用了我的其他项目的* .PrecompiledViews.dll,其中包含一个Test / Test.cshtml。
瞧,我主要应用程序中的每一页都显示了这一页。