Visual Studio,Razor,BuildProviders和Intellisense
我试图让Intellisense在非ASP.NET项目中为剃刀视图工作,并想了解VisualStudio的Razor编辑器和BuildProviders之间的关系。Visual Studio,Razor,BuildProviders和Intellisense
为了背景,我正在为使用Razor作为其视图引擎的Manos(单声道网页服务器)编写框架。我已经完成了该部分的工作,但VS中的Intellisense无法提供从未知类型到未注册构建提供程序的一系列错误,具体取决于项目输出DLL的放置位置。
我的项目是一个.NET类库,它带有.cshtml文件(构建动作无)。基本剃须刀视图类是在单独的程序集(项目外)中定义的,可以在GAC中注册,但目前不是。
我已经阅读这些文章:
- http://www.west-wind.com/weblog/posts/2011/Jan/12/IntelliSense-for-Razor-Hosting-in-nonWeb-Applications
- Need razor view engine auto-complete to work in a class library?
- http://blogs.msdn.com/b/webdevtools/archive/2011/01/20/how-to-get-razor-intellisense-for-model-in-a-class-library-project.aspx
- .NET - Razor outside MVC application - Problems with removing @inherits and providing @model
听起来像是我需要写我自己的BuildProvider,但可以”找到解释关系的任何文件建设提供商和剃须刀intellisense之间。
剃刀智能感最好目前是片状。但是,如果您使用VS SP1,则稍微好一点。只要扩展名是cshtml(还没有尝试过vbhtml,所以不能肯定地说),web.config解决方法(正如第三个链接所指出的)适用于我的类库。
另外请看这里:http://razorpad.codeplex.com/ 与LinqPad类似,这将允许您提前测试您的剃须刀代码。
Razor编辑器与ASP.Net运行时相当紧密,实际上它实际上在后台运行ASP.Net以便收集必要的运行时信息。
我唯一的建议是获得真正的保真度智能感知是一个超级黑客。而不是一个类库,你可以让你的应用程序成为一个Web应用程序项目。 WAP实际上只是一个VS可以托管网站的类库。如果你清除所有额外的东西(Global.asax,web.config等),你可能会得到你正在寻找的东西。这是一个解决方法,并在这一点上,但给它一个镜头,它可能只是工作:)
所以我明白,你试图从另一个MVC项目放弃一个web.config到你的类库项目并没有工作?你采用了哪个web.config:来自根目录的文件,还是来自Views子文件夹的文件? –