Change TFM to netcorepp2.0

This commit is contained in:
Pranav K 2017-05-04 14:37:01 -07:00
parent 87ae098832
commit 870cc9ddea
13 changed files with 18 additions and 1553 deletions

View File

@ -3,7 +3,7 @@
<AspNetCoreVersion>2.0.0-preview1-*</AspNetCoreVersion>
<AspNetIntegrationTestingVersion>0.4.0-*</AspNetIntegrationTestingVersion>
<CoreFxVersion>4.3.0</CoreFxVersion>
<InternalAspNetCoreSdkVersion>2.0.0-*</InternalAspNetCoreSdkVersion>
<InternalAspNetCoreSdkVersion>2.1.0-*</InternalAspNetCoreSdkVersion>
<MoqVersion>4.7.1</MoqVersion>
<NETStandardImplicitPackageVersion>$(BundledNETStandardPackageVersion)</NETStandardImplicitPackageVersion>
<TestSdkVersion>15.0.0</TestSdkVersion>

View File

@ -3,7 +3,7 @@
<Import Project="..\..\build\dependencies.props" />
<PropertyGroup>
<TargetFrameworks>net46;netcoreapp2.0</TargetFrameworks>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

View File

@ -34,12 +34,6 @@ namespace LocalizationSample
new CultureInfo("zh"),
new CultureInfo("zh-CN")
};
#if NET46
supportedCultures.Add(new CultureInfo("zh-CHT"));
#elif NETCOREAPP2_0
#else
#error target frameworks need to be updated.
#endif
var options = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"),
@ -149,12 +143,6 @@ $@"<!doctype html>
await context.Response.WriteAsync($" <option value=\"{new CultureInfo("ja-JP").Name}\">{new CultureInfo("ja-JP").DisplayName}</option>");
await context.Response.WriteAsync($" <option value=\"{new CultureInfo("zh").Name}\">{new CultureInfo("zh").DisplayName}</option>");
await context.Response.WriteAsync($" <option value=\"{new CultureInfo("zh-CN").Name}\">{new CultureInfo("zh-CN").DisplayName}</option>");
#if NET46
await context.Response.WriteAsync($" <option value=\"{new CultureInfo("zh-CHT").Name}\">{new CultureInfo("zh-CHT").DisplayName}</option>");
#elif NETCOREAPP2_0
#else
#error target frameworks need to be updated.
#endif
await context.Response.WriteAsync($" <option value=\"en-NOTREAL\">English (Not a real locale)</option>");
await context.Response.WriteAsync($" <option value=\"pp-NOTREAL\">Made-up (Not a real anything)</option>");
}

View File

@ -1,80 +0,0 @@
{
"AssemblyIdentity": "Microsoft.AspNetCore.Localization.Routing, Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60",
"Types": [
{
"Name": "Microsoft.AspNetCore.Localization.Routing.RouteDataRequestCultureProvider",
"Visibility": "Public",
"Kind": "Class",
"BaseType": "Microsoft.AspNetCore.Localization.RequestCultureProvider",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_RouteDataStringKey",
"Parameters": [],
"ReturnType": "System.String",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_RouteDataStringKey",
"Parameters": [
{
"Name": "value",
"Type": "System.String"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_UIRouteDataStringKey",
"Parameters": [],
"ReturnType": "System.String",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_UIRouteDataStringKey",
"Parameters": [
{
"Name": "value",
"Type": "System.String"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "DetermineProviderCultureResult",
"Parameters": [
{
"Name": "httpContext",
"Type": "Microsoft.AspNetCore.Http.HttpContext"
}
],
"ReturnType": "System.Threading.Tasks.Task<Microsoft.AspNetCore.Localization.ProviderCultureResult>",
"Virtual": true,
"Override": true,
"ImplementedInterface": "Microsoft.AspNetCore.Localization.IRequestCultureProvider",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
}
]
}

View File

@ -1,803 +0,0 @@
{
"AssemblyIdentity": "Microsoft.AspNetCore.Localization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60",
"Types": [
{
"Name": "Microsoft.AspNetCore.Builder.ApplicationBuilderExtensions",
"Visibility": "Public",
"Kind": "Class",
"Abstract": true,
"Static": true,
"Sealed": true,
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "UseRequestLocalization",
"Parameters": [
{
"Name": "app",
"Type": "Microsoft.AspNetCore.Builder.IApplicationBuilder"
}
],
"ReturnType": "Microsoft.AspNetCore.Builder.IApplicationBuilder",
"Static": true,
"Extension": true,
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "UseRequestLocalization",
"Parameters": [
{
"Name": "app",
"Type": "Microsoft.AspNetCore.Builder.IApplicationBuilder"
},
{
"Name": "options",
"Type": "Microsoft.AspNetCore.Builder.RequestLocalizationOptions"
}
],
"ReturnType": "Microsoft.AspNetCore.Builder.IApplicationBuilder",
"Static": true,
"Extension": true,
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Builder.RequestLocalizationOptions",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_DefaultRequestCulture",
"Parameters": [],
"ReturnType": "Microsoft.AspNetCore.Localization.RequestCulture",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_DefaultRequestCulture",
"Parameters": [
{
"Name": "value",
"Type": "Microsoft.AspNetCore.Localization.RequestCulture"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_FallBackToParentCultures",
"Parameters": [],
"ReturnType": "System.Boolean",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_FallBackToParentCultures",
"Parameters": [
{
"Name": "value",
"Type": "System.Boolean"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_FallBackToParentUICultures",
"Parameters": [],
"ReturnType": "System.Boolean",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_FallBackToParentUICultures",
"Parameters": [
{
"Name": "value",
"Type": "System.Boolean"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_SupportedCultures",
"Parameters": [],
"ReturnType": "System.Collections.Generic.IList<System.Globalization.CultureInfo>",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_SupportedCultures",
"Parameters": [
{
"Name": "value",
"Type": "System.Collections.Generic.IList<System.Globalization.CultureInfo>"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_SupportedUICultures",
"Parameters": [],
"ReturnType": "System.Collections.Generic.IList<System.Globalization.CultureInfo>",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_SupportedUICultures",
"Parameters": [
{
"Name": "value",
"Type": "System.Collections.Generic.IList<System.Globalization.CultureInfo>"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_RequestCultureProviders",
"Parameters": [],
"ReturnType": "System.Collections.Generic.IList<Microsoft.AspNetCore.Localization.IRequestCultureProvider>",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_RequestCultureProviders",
"Parameters": [
{
"Name": "value",
"Type": "System.Collections.Generic.IList<Microsoft.AspNetCore.Localization.IRequestCultureProvider>"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.AcceptLanguageHeaderRequestCultureProvider",
"Visibility": "Public",
"Kind": "Class",
"BaseType": "Microsoft.AspNetCore.Localization.RequestCultureProvider",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_MaximumAcceptLanguageHeaderValuesToTry",
"Parameters": [],
"ReturnType": "System.Int32",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_MaximumAcceptLanguageHeaderValuesToTry",
"Parameters": [
{
"Name": "value",
"Type": "System.Int32"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "DetermineProviderCultureResult",
"Parameters": [
{
"Name": "httpContext",
"Type": "Microsoft.AspNetCore.Http.HttpContext"
}
],
"ReturnType": "System.Threading.Tasks.Task<Microsoft.AspNetCore.Localization.ProviderCultureResult>",
"Virtual": true,
"Override": true,
"ImplementedInterface": "Microsoft.AspNetCore.Localization.IRequestCultureProvider",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.CookieRequestCultureProvider",
"Visibility": "Public",
"Kind": "Class",
"BaseType": "Microsoft.AspNetCore.Localization.RequestCultureProvider",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_CookieName",
"Parameters": [],
"ReturnType": "System.String",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_CookieName",
"Parameters": [
{
"Name": "value",
"Type": "System.String"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "DetermineProviderCultureResult",
"Parameters": [
{
"Name": "httpContext",
"Type": "Microsoft.AspNetCore.Http.HttpContext"
}
],
"ReturnType": "System.Threading.Tasks.Task<Microsoft.AspNetCore.Localization.ProviderCultureResult>",
"Virtual": true,
"Override": true,
"ImplementedInterface": "Microsoft.AspNetCore.Localization.IRequestCultureProvider",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "MakeCookieValue",
"Parameters": [
{
"Name": "requestCulture",
"Type": "Microsoft.AspNetCore.Localization.RequestCulture"
}
],
"ReturnType": "System.String",
"Static": true,
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "ParseCookieValue",
"Parameters": [
{
"Name": "value",
"Type": "System.String"
}
],
"ReturnType": "Microsoft.AspNetCore.Localization.ProviderCultureResult",
"Static": true,
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [],
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Field",
"Name": "DefaultCookieName",
"Parameters": [],
"ReturnType": "System.String",
"Static": true,
"ReadOnly": true,
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.CustomRequestCultureProvider",
"Visibility": "Public",
"Kind": "Class",
"BaseType": "Microsoft.AspNetCore.Localization.RequestCultureProvider",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "DetermineProviderCultureResult",
"Parameters": [
{
"Name": "httpContext",
"Type": "Microsoft.AspNetCore.Http.HttpContext"
}
],
"ReturnType": "System.Threading.Tasks.Task<Microsoft.AspNetCore.Localization.ProviderCultureResult>",
"Virtual": true,
"Override": true,
"ImplementedInterface": "Microsoft.AspNetCore.Localization.IRequestCultureProvider",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "provider",
"Type": "System.Func<Microsoft.AspNetCore.Http.HttpContext, System.Threading.Tasks.Task<Microsoft.AspNetCore.Localization.ProviderCultureResult>>"
}
],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.IRequestCultureFeature",
"Visibility": "Public",
"Kind": "Interface",
"Abstract": true,
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_RequestCulture",
"Parameters": [],
"ReturnType": "Microsoft.AspNetCore.Localization.RequestCulture",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_Provider",
"Parameters": [],
"ReturnType": "Microsoft.AspNetCore.Localization.IRequestCultureProvider",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.IRequestCultureProvider",
"Visibility": "Public",
"Kind": "Interface",
"Abstract": true,
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "DetermineProviderCultureResult",
"Parameters": [
{
"Name": "httpContext",
"Type": "Microsoft.AspNetCore.Http.HttpContext"
}
],
"ReturnType": "System.Threading.Tasks.Task<Microsoft.AspNetCore.Localization.ProviderCultureResult>",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.ProviderCultureResult",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_Cultures",
"Parameters": [],
"ReturnType": "System.Collections.Generic.IList<System.String>",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_UICultures",
"Parameters": [],
"ReturnType": "System.Collections.Generic.IList<System.String>",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "culture",
"Type": "System.String"
}
],
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "culture",
"Type": "System.String"
},
{
"Name": "uiCulture",
"Type": "System.String"
}
],
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "cultures",
"Type": "System.Collections.Generic.IList<System.String>"
}
],
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "cultures",
"Type": "System.Collections.Generic.IList<System.String>"
},
{
"Name": "uiCultures",
"Type": "System.Collections.Generic.IList<System.String>"
}
],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.QueryStringRequestCultureProvider",
"Visibility": "Public",
"Kind": "Class",
"BaseType": "Microsoft.AspNetCore.Localization.RequestCultureProvider",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_QueryStringKey",
"Parameters": [],
"ReturnType": "System.String",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_QueryStringKey",
"Parameters": [
{
"Name": "value",
"Type": "System.String"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_UIQueryStringKey",
"Parameters": [],
"ReturnType": "System.String",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_UIQueryStringKey",
"Parameters": [
{
"Name": "value",
"Type": "System.String"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "DetermineProviderCultureResult",
"Parameters": [
{
"Name": "httpContext",
"Type": "Microsoft.AspNetCore.Http.HttpContext"
}
],
"ReturnType": "System.Threading.Tasks.Task<Microsoft.AspNetCore.Localization.ProviderCultureResult>",
"Virtual": true,
"Override": true,
"ImplementedInterface": "Microsoft.AspNetCore.Localization.IRequestCultureProvider",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.RequestCulture",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_Culture",
"Parameters": [],
"ReturnType": "System.Globalization.CultureInfo",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_UICulture",
"Parameters": [],
"ReturnType": "System.Globalization.CultureInfo",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "culture",
"Type": "System.Globalization.CultureInfo"
}
],
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "culture",
"Type": "System.String"
}
],
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "culture",
"Type": "System.String"
},
{
"Name": "uiCulture",
"Type": "System.String"
}
],
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "culture",
"Type": "System.Globalization.CultureInfo"
},
{
"Name": "uiCulture",
"Type": "System.Globalization.CultureInfo"
}
],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.RequestCultureFeature",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [
"Microsoft.AspNetCore.Localization.IRequestCultureFeature"
],
"Members": [
{
"Kind": "Method",
"Name": "get_RequestCulture",
"Parameters": [],
"ReturnType": "Microsoft.AspNetCore.Localization.RequestCulture",
"Sealed": true,
"Virtual": true,
"ImplementedInterface": "Microsoft.AspNetCore.Localization.IRequestCultureFeature",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_Provider",
"Parameters": [],
"ReturnType": "Microsoft.AspNetCore.Localization.IRequestCultureProvider",
"Sealed": true,
"Virtual": true,
"ImplementedInterface": "Microsoft.AspNetCore.Localization.IRequestCultureFeature",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "requestCulture",
"Type": "Microsoft.AspNetCore.Localization.RequestCulture"
},
{
"Name": "provider",
"Type": "Microsoft.AspNetCore.Localization.IRequestCultureProvider"
}
],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.RequestCultureProvider",
"Visibility": "Public",
"Kind": "Class",
"Abstract": true,
"ImplementedInterfaces": [
"Microsoft.AspNetCore.Localization.IRequestCultureProvider"
],
"Members": [
{
"Kind": "Method",
"Name": "get_Options",
"Parameters": [],
"ReturnType": "Microsoft.AspNetCore.Builder.RequestLocalizationOptions",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_Options",
"Parameters": [
{
"Name": "value",
"Type": "Microsoft.AspNetCore.Builder.RequestLocalizationOptions"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "DetermineProviderCultureResult",
"Parameters": [
{
"Name": "httpContext",
"Type": "Microsoft.AspNetCore.Http.HttpContext"
}
],
"ReturnType": "System.Threading.Tasks.Task<Microsoft.AspNetCore.Localization.ProviderCultureResult>",
"Virtual": true,
"Abstract": true,
"ImplementedInterface": "Microsoft.AspNetCore.Localization.IRequestCultureProvider",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [],
"Visibility": "Protected",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "Invoke",
"Parameters": [
{
"Name": "context",
"Type": "Microsoft.AspNetCore.Http.HttpContext"
}
],
"ReturnType": "System.Threading.Tasks.Task",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "next",
"Type": "Microsoft.AspNetCore.Http.RequestDelegate"
},
{
"Name": "options",
"Type": "Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Builder.RequestLocalizationOptions>"
}
],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
}
]
}

View File

@ -1,517 +0,0 @@
{
"AssemblyIdentity": "Microsoft.Extensions.Localization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60",
"Types": [
{
"Name": "Microsoft.Extensions.DependencyInjection.LocalizationServiceCollectionExtensions",
"Visibility": "Public",
"Kind": "Class",
"Abstract": true,
"Static": true,
"Sealed": true,
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "AddLocalization",
"Parameters": [
{
"Name": "services",
"Type": "Microsoft.Extensions.DependencyInjection.IServiceCollection"
}
],
"ReturnType": "Microsoft.Extensions.DependencyInjection.IServiceCollection",
"Static": true,
"Extension": true,
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "AddLocalization",
"Parameters": [
{
"Name": "services",
"Type": "Microsoft.Extensions.DependencyInjection.IServiceCollection"
},
{
"Name": "setupAction",
"Type": "System.Action<Microsoft.Extensions.Localization.LocalizationOptions>"
}
],
"ReturnType": "Microsoft.Extensions.DependencyInjection.IServiceCollection",
"Static": true,
"Extension": true,
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.Extensions.Localization.IResourceNamesCache",
"Visibility": "Public",
"Kind": "Interface",
"Abstract": true,
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "GetOrAdd",
"Parameters": [
{
"Name": "name",
"Type": "System.String"
},
{
"Name": "valueFactory",
"Type": "System.Func<System.String, System.Collections.Generic.IList<System.String>>"
}
],
"ReturnType": "System.Collections.Generic.IList<System.String>",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.Extensions.Localization.LocalizationOptions",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_ResourcesPath",
"Parameters": [],
"ReturnType": "System.String",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "set_ResourcesPath",
"Parameters": [
{
"Name": "value",
"Type": "System.String"
}
],
"ReturnType": "System.Void",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.Extensions.Localization.ResourceManagerStringLocalizer",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [
"Microsoft.Extensions.Localization.IStringLocalizer"
],
"Members": [
{
"Kind": "Method",
"Name": "get_Item",
"Parameters": [
{
"Name": "name",
"Type": "System.String"
}
],
"ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
"Virtual": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_Item",
"Parameters": [
{
"Name": "name",
"Type": "System.String"
},
{
"Name": "arguments",
"Type": "System.Object[]",
"IsParams": true
}
],
"ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
"Virtual": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "WithCulture",
"Parameters": [
{
"Name": "culture",
"Type": "System.Globalization.CultureInfo"
}
],
"ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
"Sealed": true,
"Virtual": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "GetAllStrings",
"Parameters": [
{
"Name": "includeParentCultures",
"Type": "System.Boolean"
}
],
"ReturnType": "System.Collections.Generic.IEnumerable<Microsoft.Extensions.Localization.LocalizedString>",
"Virtual": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "GetAllStrings",
"Parameters": [
{
"Name": "includeParentCultures",
"Type": "System.Boolean"
},
{
"Name": "culture",
"Type": "System.Globalization.CultureInfo"
}
],
"ReturnType": "System.Collections.Generic.IEnumerable<Microsoft.Extensions.Localization.LocalizedString>",
"Visibility": "Protected",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "GetStringSafely",
"Parameters": [
{
"Name": "name",
"Type": "System.String"
},
{
"Name": "culture",
"Type": "System.Globalization.CultureInfo"
}
],
"ReturnType": "System.String",
"Visibility": "Protected",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "resourceManager",
"Type": "System.Resources.ResourceManager"
},
{
"Name": "resourceAssembly",
"Type": "System.Reflection.Assembly"
},
{
"Name": "baseName",
"Type": "System.String"
},
{
"Name": "resourceNamesCache",
"Type": "Microsoft.Extensions.Localization.IResourceNamesCache"
}
],
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "resourceManager",
"Type": "System.Resources.ResourceManager"
},
{
"Name": "resourceAssemblyWrapper",
"Type": "Microsoft.Extensions.Localization.Internal.AssemblyWrapper"
},
{
"Name": "baseName",
"Type": "System.String"
},
{
"Name": "resourceNamesCache",
"Type": "Microsoft.Extensions.Localization.IResourceNamesCache"
}
],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.Extensions.Localization.ResourceManagerStringLocalizerFactory",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [
"Microsoft.Extensions.Localization.IStringLocalizerFactory"
],
"Members": [
{
"Kind": "Method",
"Name": "Create",
"Parameters": [
{
"Name": "resourceSource",
"Type": "System.Type"
}
],
"ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
"Sealed": true,
"Virtual": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizerFactory",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "Create",
"Parameters": [
{
"Name": "baseName",
"Type": "System.String"
},
{
"Name": "location",
"Type": "System.String"
}
],
"ReturnType": "Microsoft.Extensions.Localization.IStringLocalizer",
"Sealed": true,
"Virtual": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizerFactory",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "hostingEnvironment",
"Type": "Microsoft.AspNetCore.Hosting.IHostingEnvironment"
},
{
"Name": "localizationOptions",
"Type": "Microsoft.Extensions.Options.IOptions<Microsoft.Extensions.Localization.LocalizationOptions>"
}
],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.Extensions.Localization.ResourceManagerWithCultureStringLocalizer",
"Visibility": "Public",
"Kind": "Class",
"BaseType": "Microsoft.Extensions.Localization.ResourceManagerStringLocalizer",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_Item",
"Parameters": [
{
"Name": "name",
"Type": "System.String"
}
],
"ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
"Virtual": true,
"Override": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_Item",
"Parameters": [
{
"Name": "name",
"Type": "System.String"
},
{
"Name": "arguments",
"Type": "System.Object[]",
"IsParams": true
}
],
"ReturnType": "Microsoft.Extensions.Localization.LocalizedString",
"Virtual": true,
"Override": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "GetAllStrings",
"Parameters": [
{
"Name": "includeParentCultures",
"Type": "System.Boolean"
}
],
"ReturnType": "System.Collections.Generic.IEnumerable<Microsoft.Extensions.Localization.LocalizedString>",
"Virtual": true,
"Override": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IStringLocalizer",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "resourceManager",
"Type": "System.Resources.ResourceManager"
},
{
"Name": "resourceAssembly",
"Type": "System.Reflection.Assembly"
},
{
"Name": "baseName",
"Type": "System.String"
},
{
"Name": "resourceNamesCache",
"Type": "Microsoft.Extensions.Localization.IResourceNamesCache"
},
{
"Name": "culture",
"Type": "System.Globalization.CultureInfo"
}
],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.Extensions.Localization.ResourceNamesCache",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [
"Microsoft.Extensions.Localization.IResourceNamesCache"
],
"Members": [
{
"Kind": "Method",
"Name": "GetOrAdd",
"Parameters": [
{
"Name": "name",
"Type": "System.String"
},
{
"Name": "valueFactory",
"Type": "System.Func<System.String, System.Collections.Generic.IList<System.String>>"
}
],
"ReturnType": "System.Collections.Generic.IList<System.String>",
"Sealed": true,
"Virtual": true,
"ImplementedInterface": "Microsoft.Extensions.Localization.IResourceNamesCache",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
},
{
"Name": "Microsoft.Extensions.Localization.Internal.AssemblyWrapper",
"Visibility": "Public",
"Kind": "Class",
"ImplementedInterfaces": [],
"Members": [
{
"Kind": "Method",
"Name": "get_Assembly",
"Parameters": [],
"ReturnType": "System.Reflection.Assembly",
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "get_FullName",
"Parameters": [],
"ReturnType": "System.String",
"Virtual": true,
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Method",
"Name": "GetManifestResourceStream",
"Parameters": [
{
"Name": "name",
"Type": "System.String"
}
],
"ReturnType": "System.IO.Stream",
"Virtual": true,
"Visibility": "Public",
"GenericParameter": []
},
{
"Kind": "Constructor",
"Name": ".ctor",
"Parameters": [
{
"Name": "assembly",
"Type": "System.Reflection.Assembly"
}
],
"Visibility": "Public",
"GenericParameter": []
}
],
"GenericParameters": []
}
]
}

View File

@ -3,8 +3,7 @@
<Import Project="..\..\build\common.props" />
<PropertyGroup>
<TargetFrameworks>netcoreapp2.0;net46</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netcoreapp2.0</TargetFrameworks>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

View File

@ -13,28 +13,12 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
{
private static readonly string _applicationPath = Path.Combine("samples", "LocalizationSample");
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
public Task RunSite_WindowsOnly()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponseHeading(
RuntimeFlavor.Clr,
RuntimeArchitecture.x64,
"My/Resources",
"fr-FR",
"<h1>Bonjour</h1>");
}
[Fact]
public Task RunSite_AnyOS()
public Task RunSite()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponseHeading(
RuntimeFlavor.CoreClr,
RuntimeArchitecture.x64,
"My/Resources",
"fr-FR",

View File

@ -14,27 +14,11 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
private static readonly string _applicationPath = Path.Combine("test", "LocalizationWebsite");
[Fact]
public Task Localization_CustomCulture_AllOS()
public Task Localization_CustomCulture()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.CoreClr,
RuntimeArchitecture.x64,
"CustomCulturePreserved",
"en-US",
"kr10.00");
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
public Task Localization_CustomCulture_Windows()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.Clr,
RuntimeArchitecture.x64,
"CustomCulturePreserved",
"en-US",
@ -42,27 +26,11 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
}
[Fact]
public Task Localization_ResourcesInClassLibrary_ReturnLocalizedValue_AllOS()
public Task Localization_ResourcesInClassLibrary_ReturnLocalizedValue()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.CoreClr,
RuntimeArchitecture.x64,
"ResourcesInClassLibrary",
"fr-FR",
"Bonjour from ResourcesClassLibraryNoAttribute Bonjour from ResourcesClassLibraryNoAttribute Bonjour from ResourcesClassLibraryWithAttribute Bonjour from ResourcesClassLibraryWithAttribute");
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
public Task Localization_ResourcesInClassLibrary_ReturnLocalizedValue_Windows()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.Clr,
RuntimeArchitecture.x64,
"ResourcesInClassLibrary",
"fr-FR",
@ -70,27 +38,11 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
}
[Fact]
public Task Localization_ResourcesInFolder_ReturnLocalizedValue_AllOS()
public Task Localization_ResourcesInFolder_ReturnLocalizedValue()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.CoreClr,
RuntimeArchitecture.x64,
"ResourcesInFolder",
"fr-FR",
"Bonjour from StartupResourcesInFolder Bonjour from Test in resources folder Bonjour from Customer in resources folder Hello");
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
public Task Localization_ResourcesInFolder_ReturnLocalizedValue_Windows()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.Clr,
RuntimeArchitecture.x64,
"ResourcesInFolder",
"fr-FR",
@ -98,27 +50,11 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
}
[Fact]
public Task Localization_ResourcesInFolder_ReturnLocalizedValue_WithCultureFallback_AllOS()
public Task Localization_ResourcesInFolder_ReturnLocalizedValue_WithCultureFallback()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.CoreClr,
RuntimeArchitecture.x64,
"ResourcesInFolder",
"fr-FR-test",
"Bonjour from StartupResourcesInFolder Bonjour from Test in resources folder Bonjour from Customer in resources folder Hello");
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
public Task Localization_ResourcesInFolder_ReturnLocalizedValue_WithCultureFallback_Windows()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.Clr,
RuntimeArchitecture.x64,
"ResourcesInFolder",
"fr-FR-test",
@ -126,27 +62,11 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
}
[Fact]
public Task Localization_ResourcesInFolder_ReturnNonLocalizedValue_CultureHierarchyTooDeep_AllOS()
public Task Localization_ResourcesInFolder_ReturnNonLocalizedValue_CultureHierarchyTooDeep()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.CoreClr,
RuntimeArchitecture.x64,
"ResourcesInFolder",
"fr-FR-test-again-too-deep-to-work",
"Hello Hello Hello Hello");
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
public Task Localization_ResourcesInFolder_ReturnNonLocalizedValue_CultureHierarchyTooDeep_Windows()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.Clr,
RuntimeArchitecture.x64,
"ResourcesInFolder",
"fr-FR-test-again-too-deep-to-work",
@ -154,27 +74,11 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
}
[Fact]
public Task Localization_ResourcesAtRootFolder_ReturnLocalizedValue_AllOS()
public Task Localization_ResourcesAtRootFolder_ReturnLocalizedValue()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.CoreClr,
RuntimeArchitecture.x64,
"ResourcesAtRootFolder",
"fr-FR",
"Bonjour from StartupResourcesAtRootFolder Bonjour from Test in root folder Bonjour from Customer in Models folder");
}
[ConditionalFact]
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
public Task Localization_ResourcesAtRootFolder_ReturnLocalizedValue_Windows()
{
var testRunner = new TestRunner(_applicationPath);
return testRunner.RunTestAndVerifyResponse(
RuntimeFlavor.Clr,
RuntimeArchitecture.x64,
"ResourcesAtRootFolder",
"fr-FR",

View File

@ -44,18 +44,17 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
}
private async Task<string> RunTestAndGetResponse(
RuntimeFlavor runtimeFlavor,
RuntimeArchitecture runtimeArchitecture,
string environmentName,
string locale)
{
var loggerFactory = new LoggerFactory();
var deploymentParameters = new DeploymentParameters(_applicationPath, ServerType.Kestrel, runtimeFlavor, runtimeArchitecture)
var deploymentParameters = new DeploymentParameters(_applicationPath, ServerType.Kestrel, RuntimeFlavor.CoreClr, runtimeArchitecture)
{
ApplicationBaseUriHint = ApplicationBasePath,
EnvironmentName = environmentName,
TargetFramework = runtimeFlavor == RuntimeFlavor.Clr ? "net46" : "netcoreapp2.0"
TargetFramework = "netcoreapp2.0"
};
using (var deployer = ApplicationDeployerFactory.Create(deploymentParameters, loggerFactory))
@ -71,7 +70,7 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
using (var httpClient = new HttpClient(httpClientHandler) { BaseAddress = new Uri(deploymentResult.ApplicationBaseUri) })
{
var logger = loggerFactory.CreateLogger(string.Format("Localization Test Site:{0}:{1}:{2}", ServerType.Kestrel, runtimeFlavor, runtimeArchitecture));
var logger = loggerFactory.CreateLogger(string.Format("Localization Test Site:{0}:{1}", ServerType.Kestrel, runtimeArchitecture));
// Request to base address and check if various parts of the body are rendered & measure the cold startup time.
var response = await RetryHelper.RetryRequest(() =>
@ -85,25 +84,23 @@ namespace Microsoft.AspNetCore.Localization.FunctionalTests
}
public async Task RunTestAndVerifyResponse(
RuntimeFlavor runtimeFlavor,
RuntimeArchitecture runtimeArchitecture,
string environmentName,
string locale,
string expectedText)
{
var responseText = await RunTestAndGetResponse(runtimeFlavor, runtimeArchitecture, environmentName, locale);
var responseText = await RunTestAndGetResponse(runtimeArchitecture, environmentName, locale);
Console.WriteLine("Response Text " + responseText);
Assert.Equal(expectedText, responseText);
}
public async Task RunTestAndVerifyResponseHeading(
RuntimeFlavor runtimeFlavor,
RuntimeArchitecture runtimeArchitecture,
string environmentName,
string locale,
string expectedHeadingText)
{
var responseText = await RunTestAndGetResponse(runtimeFlavor, runtimeArchitecture, environmentName, locale);
var responseText = await RunTestAndGetResponse(runtimeArchitecture, environmentName, locale);
var headingIndex = responseText.IndexOf(expectedHeadingText);
Console.WriteLine("Response Header " + responseText);
Assert.True(headingIndex >= 0);

View File

@ -3,10 +3,7 @@
<Import Project="..\..\build\common.props" />
<PropertyGroup>
<TargetFrameworks>netcoreapp2.0;net46</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netcoreapp2.0</TargetFrameworks>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

View File

@ -3,10 +3,7 @@
<Import Project="..\..\build\common.props" />
<PropertyGroup>
<TargetFrameworks>netcoreapp2.0;net46</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netcoreapp2.0</TargetFrameworks>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

View File

@ -3,8 +3,7 @@
<Import Project="..\..\build\common.props" />
<PropertyGroup>
<TargetFrameworks>netcoreapp2.0;net46</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netcoreapp2.0</TargetFrameworks>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>