- Moved initialization of TagHelperDescriptorResolver to be Lazy so DesignTimeMode can be set.
This commit is contained in:
N. Taylor Mullen 2015-06-25 15:40:28 -07:00
parent 2f554c4b29
commit 02a3ca8abb
3 changed files with 26 additions and 3 deletions

View File

@ -13,6 +13,7 @@ using Microsoft.AspNet.Razor.Chunks;
using Microsoft.AspNet.Razor.CodeGenerators;
using Microsoft.AspNet.Razor.Parser;
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
using Microsoft.AspNet.Razor.TagHelpers;
using Microsoft.Framework.Internal;
namespace Microsoft.AspNet.Mvc.Razor
@ -44,6 +45,7 @@ namespace Microsoft.AspNet.Mvc.Razor
private readonly IChunkTreeCache _chunkTreeCache;
private readonly RazorPathNormalizer _pathNormalizer;
private ChunkInheritanceUtility _chunkInheritanceUtility;
private ITagHelperDescriptorResolver _tagHelperDescriptorResolver;
internal MvcRazorHost(IChunkTreeCache chunkTreeCache, RazorPathNormalizer pathNormalizer)
: base(new CSharpRazorCodeLanguage())
@ -52,7 +54,6 @@ namespace Microsoft.AspNet.Mvc.Razor
_baseType = BaseType;
_chunkTreeCache = chunkTreeCache;
TagHelperDescriptorResolver = new TagHelperDescriptorResolver();
DefaultBaseClass = BaseType + "<" + DefaultModel + ">";
DefaultNamespace = "Asp";
// Enable instrumentation by default to allow precompiled views to work with BrowserLink.
@ -132,6 +133,27 @@ namespace Microsoft.AspNet.Mvc.Razor
{
}
/// <inheritdoc />
public override ITagHelperDescriptorResolver TagHelperDescriptorResolver
{
get
{
// The initialization of the _tagHelperDescriptorResolver needs to be lazy to allow for the setting
// of DesignTimeMode.
if (_tagHelperDescriptorResolver == null)
{
_tagHelperDescriptorResolver = new TagHelperDescriptorResolver(DesignTimeMode);
}
return _tagHelperDescriptorResolver;
}
[param: NotNull]
set
{
_tagHelperDescriptorResolver = value;
}
}
/// <summary>
/// Gets the model type used by default when no model is specified.
/// </summary>

View File

@ -191,7 +191,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Precompilation
protected IMvcRazorHost GetRazorHost()
{
var descriptorResolver = new TagHelperDescriptorResolver(TagHelperTypeResolver);
var descriptorResolver = new TagHelperDescriptorResolver(TagHelperTypeResolver, designTime: false);
return new MvcRazorHost(new DefaultChunkTreeCache(FileProvider))
{
TagHelperDescriptorResolver = descriptorResolver

View File

@ -29,7 +29,8 @@ namespace Microsoft.AspNet.Mvc.Razor
name: "MyAttribute",
propertyName: "SomeProperty",
typeName: propertyType,
isIndexer: false);
isIndexer: false,
usageDescriptor: null);
var writer = new CSharpCodeWriter();
var generatorContext = new ChunkGeneratorContext(
host: null,