Skip to content
This repository was archived by the owner on Feb 23, 2021. It is now read-only.

Commit 2b7ac7d

Browse files
committed
Downgrading dependencies version from 1.1.0-* to 1.0.0-*
- Added workarounds to make TagHelper discovery work
1 parent 236b7c4 commit 2b7ac7d

3 files changed

Lines changed: 43 additions & 13 deletions

File tree

src/Microsoft.AspNetCore.Razor.Design/Internal/AssemblyTagHelperDescriptorResolver.cs

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using System.Globalization;
77
using System.Linq;
88
using System.Reflection;
9-
using System.Threading.Tasks;
109
using Microsoft.AspNetCore.Razor.Compilation.TagHelpers;
1110
using Microsoft.AspNetCore.Razor.Runtime.TagHelpers;
1211
using Microsoft.AspNetCore.Razor.TagHelpers;
@@ -20,6 +19,7 @@ public class AssemblyTagHelperDescriptorResolver
2019
private const string MvcAssemblyName = "Microsoft.AspNetCore.Mvc";
2120
private const string MethodName = "PopulateServiceCollection";
2221
private const string ViewComponentNameKey = "ViewComponentName";
22+
private const string PropertyBagPropertyName = "PropertyBag";
2323

2424
private readonly TagHelperDescriptorFactory _tagHelperDescriptorFactory;
2525
private readonly TagHelperTypeResolver _tagHelperTypeResolver;
@@ -92,7 +92,7 @@ public IEnumerable<TagHelperDescriptor> Resolve(string assemblyName, ErrorSink e
9292

9393
// Temporary workaround to make design time for ViewComponent tag helpers work without needing a VS update.
9494
// This will be removed in a future version.
95-
var vcthDescriptors = descriptors.Where(d => d.PropertyBag.ContainsKey(ViewComponentNameKey));
95+
var vcthDescriptors = descriptors.Where(d => IsViewComponentTagHelperDescriptor(d));
9696
var fakeVcthDescriptors = GetFakeDescriptors(vcthDescriptors);
9797

9898
var finalDescriptors = descriptors.Except(vcthDescriptors).Union(fakeVcthDescriptors);
@@ -141,15 +141,13 @@ private IEnumerable<TagHelperDescriptor> GetFakeDescriptors(IEnumerable<TagHelpe
141141
foreach (var descriptor in vcthDescriptors)
142142
{
143143
var fakeType = typeof(ViewComponentTagHelperDesignTimeType).FullName;
144-
var fakeDescriptor = new TagHelperDescriptor(descriptor);
145-
fakeDescriptor.TypeName = fakeType;
144+
var fakeDescriptor = GetFakeDescriptorForTypeName(descriptor, fakeType);
146145

147146
var fakeAttributes = new List<TagHelperAttributeDescriptor>();
148147
fakeDescriptor.Attributes = fakeAttributes;
149148

150149
var fakeHelperType = typeof(ViewComponentTagHelperDesignTimeHelperType).FullName;
151-
var fakeHelperDescriptor = new TagHelperDescriptor(descriptor);
152-
fakeHelperDescriptor.TypeName = fakeHelperType;
150+
var fakeHelperDescriptor = GetFakeDescriptorForTypeName(descriptor, fakeHelperType);
153151

154152
var fakeHelperAttributes = new List<TagHelperAttributeDescriptor>();
155153
fakeHelperDescriptor.Attributes = fakeHelperAttributes;
@@ -216,6 +214,38 @@ private IEnumerable<TagHelperDescriptor> GetFakeDescriptors(IEnumerable<TagHelpe
216214

217215
return fakeDescriptors;
218216
}
217+
218+
private static TagHelperDescriptor GetFakeDescriptorForTypeName(TagHelperDescriptor descriptor, string typeName)
219+
{
220+
var fakeDescriptor = new TagHelperDescriptor()
221+
{
222+
Prefix = descriptor.Prefix,
223+
TagName = descriptor.TagName,
224+
TypeName = typeName,
225+
AssemblyName = descriptor.AssemblyName,
226+
Attributes = descriptor.Attributes,
227+
RequiredAttributes = descriptor.RequiredAttributes,
228+
AllowedChildren = descriptor.AllowedChildren,
229+
RequiredParent = descriptor.RequiredParent,
230+
TagStructure = descriptor.TagStructure,
231+
DesignTimeDescriptor = descriptor.DesignTimeDescriptor
232+
};
233+
234+
return fakeDescriptor;
235+
}
236+
237+
private static bool IsViewComponentTagHelperDescriptor(TagHelperDescriptor descriptor)
238+
{
239+
var propertyBag = descriptor.GetType().GetProperty(PropertyBagPropertyName)?.GetValue(descriptor)
240+
as IDictionary<string, string>;
241+
242+
if (propertyBag != null)
243+
{
244+
return propertyBag.ContainsKey(ViewComponentNameKey);
245+
}
246+
247+
return false;
248+
}
219249
}
220250

221251
public abstract class ViewComponentTagHelperDesignTimeType : TagHelper

src/Microsoft.AspNetCore.Razor.Design/project.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,17 @@
3636
}
3737
},
3838
"dependencies": {
39-
"Microsoft.AspNetCore.Razor.Runtime": "1.1.0-*",
40-
"Microsoft.Extensions.CommandLineUtils": "1.1.0-*",
41-
"Microsoft.Extensions.DependencyInjection": "1.1.0-*",
39+
"Microsoft.AspNetCore.Razor.Runtime": "1.0.0",
40+
"Microsoft.Extensions.CommandLineUtils": "1.0.0",
41+
"Microsoft.Extensions.DependencyInjection": "1.0.0",
4242
"Newtonsoft.Json": "9.0.1"
4343
},
4444
"frameworks": {
4545
"netcoreapp1.0": {
4646
"dependencies": {
4747
"Microsoft.NETCore.App": {
4848
"type": "platform",
49-
"version": "1.1.0-*"
49+
"version": "1.0.0"
5050
}
5151
}
5252
},

src/Microsoft.AspNetCore.Razor.Tools/project.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"dependencies": {
2828
"Microsoft.AspNetCore.Razor.Design": "1.0.0-*",
2929
"Microsoft.DotNet.Cli.Utils": "1.0.0-*",
30-
"Microsoft.Extensions.PlatformAbstractions": "1.1.0-*",
30+
"Microsoft.Extensions.PlatformAbstractions": "1.0.0",
3131
"Microsoft.Extensions.DotnetToolDispatcher.Sources": {
3232
"type": "build",
3333
"version": "1.1.0-*"
@@ -39,9 +39,9 @@
3939
"Microsoft.DotNet.ProjectModel.Loader": "1.0.0-*",
4040
"Microsoft.NETCore.App": {
4141
"type": "platform",
42-
"version": "1.1.0-*"
42+
"version": "1.0.0"
4343
},
44-
"System.Runtime.Serialization.Primitives": "4.3.0-*"
44+
"System.Runtime.Serialization.Primitives": "4.1.1"
4545
}
4646
},
4747
"net451": {}

0 commit comments

Comments
 (0)