From 87d291dd51d4f7cf35284e02f318385233f53915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Herceg?= Date: Thu, 24 May 2018 20:54:03 +0200 Subject: [PATCH] OWIN Swashbuckle extensions converted to new project system Swashbuckle extension projects - Nuget metadata added --- ...ramework.Api.Swashbuckle.AspNetCore.csproj | 19 +++- ...ramework.Api.Swashbuckle.Owin.Tests.csproj | 2 +- .../Attributes/AsObjectAttribute.cs | 26 +++++ ...tVVM.Framework.Api.Swashbuckle.Owin.csproj | 84 ++++++++++++++ .../AddAsObjectAnnotationOperationFilter.cs | 65 +++++++++++ .../Filters/AddTypeToModelSchemaFilter.cs | 20 ++++ .../Filters/HandleKnownTypesDocumentFilter.cs | 93 ++++++++++++++++ .../Properties/AssemblyInfo.cs | 0 .../SwashbuckleExtensions.cs | 26 +++++ .../app.config | 0 .../packages.config | 0 ...tVVM.Framework.Api.Swashbuckle.Owin.csproj | 104 +++++------------- ...otVVM.Samples.BasicSamples.Api.Owin.csproj | 2 +- src/DotVVM.sln | 30 ++--- src/Tools/build/publish.ps1 | 4 +- 15 files changed, 378 insertions(+), 97 deletions(-) create mode 100644 src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Attributes/AsObjectAttribute.cs create mode 100644 src/DotVVM.Framework.Api.Swashbuckle.Owin.old/DotVVM.Framework.Api.Swashbuckle.Owin.csproj create mode 100644 src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/AddAsObjectAnnotationOperationFilter.cs create mode 100644 src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/AddTypeToModelSchemaFilter.cs create mode 100644 src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/HandleKnownTypesDocumentFilter.cs rename src/{DotVVM.Framework.Api.Swashbuckle.Owin => DotVVM.Framework.Api.Swashbuckle.Owin.old}/Properties/AssemblyInfo.cs (100%) create mode 100644 src/DotVVM.Framework.Api.Swashbuckle.Owin.old/SwashbuckleExtensions.cs rename src/{DotVVM.Framework.Api.Swashbuckle.Owin => DotVVM.Framework.Api.Swashbuckle.Owin.old}/app.config (100%) rename src/{DotVVM.Framework.Api.Swashbuckle.Owin => DotVVM.Framework.Api.Swashbuckle.Owin.old}/packages.config (100%) diff --git a/src/DotVVM.Framework.Api.Swashbuckle.AspNetCore/DotVVM.Framework.Api.Swashbuckle.AspNetCore.csproj b/src/DotVVM.Framework.Api.Swashbuckle.AspNetCore/DotVVM.Framework.Api.Swashbuckle.AspNetCore.csproj index 4c81243a3a..ac10b87371 100644 --- a/src/DotVVM.Framework.Api.Swashbuckle.AspNetCore/DotVVM.Framework.Api.Swashbuckle.AspNetCore.csproj +++ b/src/DotVVM.Framework.Api.Swashbuckle.AspNetCore/DotVVM.Framework.Api.Swashbuckle.AspNetCore.csproj @@ -1,7 +1,24 @@ - + netstandard2.0 + DotVVM.Api.Swashbuckle.AspNetCore + 2.0.0-preview08-28084 + RIGANTI + Swashbuckle.AspNetCore extensions for DotVVM. + false + dotvvm;asp.net;mvvm;owin;dotnetcore;dnx + https://dotvvm.com/Content/images/icons/icon-blue-64x64.png + https://github.com/riganti/dotvvm/blob/master/LICENSE + false + false + false + false + false + false + false + false + true diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin.Tests/DotVVM.Framework.Api.Swashbuckle.Owin.Tests.csproj b/src/DotVVM.Framework.Api.Swashbuckle.Owin.Tests/DotVVM.Framework.Api.Swashbuckle.Owin.Tests.csproj index ba35e41466..f2f2829928 100644 --- a/src/DotVVM.Framework.Api.Swashbuckle.Owin.Tests/DotVVM.Framework.Api.Swashbuckle.Owin.Tests.csproj +++ b/src/DotVVM.Framework.Api.Swashbuckle.Owin.Tests/DotVVM.Framework.Api.Swashbuckle.Owin.Tests.csproj @@ -78,7 +78,7 @@ DotVVM.Core - {54aecfe5-af60-425e-a022-8233d276d3c6} + {bd72f6fc-a6ca-4b10-8098-3d27693e25ba} DotVVM.Framework.Api.Swashbuckle.Owin diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Attributes/AsObjectAttribute.cs b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Attributes/AsObjectAttribute.cs new file mode 100644 index 0000000000..049868432d --- /dev/null +++ b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Attributes/AsObjectAttribute.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace DotVVM.Framework.Api.Swashbuckle.Attributes +{ + /// + /// Configure Swagger generator not to generate the method with the properties of the complex-type parameter passed as separate arguments, but to generate a method which accepts one argument of the specified complex type. + /// This attribute is used together with the FromUri attribute. + /// + [AttributeUsage(AttributeTargets.Parameter)] + public class AsObjectAttribute : Attribute + { + + public Type ClientType { get; set; } + + public AsObjectAttribute() + { + } + + public AsObjectAttribute(Type clientType) + { + ClientType = clientType; + } + } +} diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/DotVVM.Framework.Api.Swashbuckle.Owin.csproj b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/DotVVM.Framework.Api.Swashbuckle.Owin.csproj new file mode 100644 index 0000000000..669b4db10a --- /dev/null +++ b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/DotVVM.Framework.Api.Swashbuckle.Owin.csproj @@ -0,0 +1,84 @@ + + + + + Debug + AnyCPU + {54AECFE5-AF60-425E-A022-8233D276D3C6} + Library + Properties + DotVVM.Framework.Api.Swashbuckle.Owin + DotVVM.Framework.Api.Swashbuckle.Owin + v4.6.1 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.1.0.0\lib\netstandard1.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll + + + ..\packages\Microsoft.Extensions.Options.1.0.0\lib\netstandard1.0\Microsoft.Extensions.Options.dll + + + ..\packages\Microsoft.Extensions.Primitives.1.0.0\lib\netstandard1.0\Microsoft.Extensions.Primitives.dll + + + ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\packages\Swashbuckle.Core.5.6.0\lib\net40\Swashbuckle.Core.dll + + + + + + ..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll + + + + ..\packages\Microsoft.AspNet.WebApi.Core.4.0.20710.0\lib\net40\System.Web.Http.dll + + + + + + + + + + + + + + + + + + + + + + + {45fa2f43-d92b-4a9b-9b93-9ab519ad0127} + DotVVM.Core + + + + \ No newline at end of file diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/AddAsObjectAnnotationOperationFilter.cs b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/AddAsObjectAnnotationOperationFilter.cs new file mode 100644 index 0000000000..8322b13e29 --- /dev/null +++ b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/AddAsObjectAnnotationOperationFilter.cs @@ -0,0 +1,65 @@ +using System; +using System.Linq; +using System.Reflection; +using System.Web.Http.Description; +using DotVVM.Core.Common; +using DotVVM.Framework.Api.Swashbuckle.Attributes; +using DotVVM.Framework.ViewModel; +using Swashbuckle.Swagger; + +namespace DotVVM.Framework.Api.Swashbuckle.Owin.Filters +{ + public class AddAsObjectAnnotationOperationFilter : IOperationFilter + { + private readonly IPropertySerialization propertySerialization; + + public AddAsObjectAnnotationOperationFilter(IPropertySerialization propertySerialization) + { + this.propertySerialization = propertySerialization; + } + + public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) + { + var parameters = apiDescription.ParameterDescriptions + .Select(p => new { + Value = p, + Attribute = p.ParameterDescriptor + .GetCustomAttributes() + .FirstOrDefault() + }) + .Where(d => d.Attribute != null); + + var groups = apiDescription.ParameterDescriptions.GroupBy(p => p.ParameterDescriptor); + + foreach (var param in parameters) + { + // add full type name to the metadata + foreach (var jsonParam in operation.parameters.Where(p => p.name.StartsWith(param.Value.Name + "."))) + { + var parameterType = param.Attribute.ClientType ?? param.Value.ParameterDescriptor.ParameterType; + + // the vendorExtensions dictionary instance is reused, create a new one + var dict = jsonParam.vendorExtensions.ToDictionary(e => e.Key, e => e.Value); + dict.Add(ApiConstants.DotvvmWrapperTypeKey, parameterType.FullName + ", " + parameterType.Assembly.GetName().Name); + jsonParam.vendorExtensions = dict; + + // fix casing in the second part of the name + var propertyName = GetPropertyName(parameterType, jsonParam.name.Substring(jsonParam.name.IndexOf(".") + 1)); + jsonParam.name = param.Value.Name + "." + propertyName; + } + } + } + + private string GetPropertyName(Type type, string propertyName) + { + var propertyInfo = type.GetProperty(propertyName, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); + + if (propertyInfo == null) + { + return propertyName; + } + + return propertySerialization.ResolveName(propertyInfo); + } + } +} diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/AddTypeToModelSchemaFilter.cs b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/AddTypeToModelSchemaFilter.cs new file mode 100644 index 0000000000..f40db0cfc6 --- /dev/null +++ b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/AddTypeToModelSchemaFilter.cs @@ -0,0 +1,20 @@ +using System; +using System.Reflection; +using DotVVM.Core.Common; +using DotVVM.Framework.Controls; +using DotVVM.Framework.ViewModel; +using Swashbuckle.Swagger; + +namespace DotVVM.Framework.Api.Swashbuckle.Owin.Filters +{ + public class AddTypeToModelSchemaFilter : ISchemaFilter + { + public void Apply(Schema schema, SchemaRegistry schemaRegistry, Type type) + { + if (schema.type == "object") + { + schema.vendorExtensions.Add(ApiConstants.DotvvmTypeKey, type); + } + } + } +} diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/HandleKnownTypesDocumentFilter.cs b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/HandleKnownTypesDocumentFilter.cs new file mode 100644 index 0000000000..de03b9d538 --- /dev/null +++ b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Filters/HandleKnownTypesDocumentFilter.cs @@ -0,0 +1,93 @@ +using System; +using System.Linq; +using System.Reflection; +using System.Web.Http.Description; +using DotVVM.Core.Common; +using DotVVM.Framework.ViewModel; +using Swashbuckle.Swagger; + +namespace DotVVM.Framework.Api.Swashbuckle.Owin.Filters +{ + public class HandleKnownTypesDocumentFilter : IDocumentFilter + { + private readonly DotvvmApiOptions apiOptions; + private readonly IPropertySerialization propertySerialization; + + public HandleKnownTypesDocumentFilter(DotvvmApiOptions apiOptions, IPropertySerialization propertySerialization) + { + this.apiOptions = apiOptions; + this.propertySerialization = propertySerialization; + } + + public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer) + { + foreach (var schema in swaggerDoc.definitions.Values) + { + if (schema.vendorExtensions.TryGetValue(ApiConstants.DotvvmTypeKey, out var objType) && objType is Type underlayingType) + { + if (apiOptions.IsKnownType(underlayingType)) + { + var name = CreateProperName(underlayingType, swaggerDoc); + schema.vendorExtensions.Add(ApiConstants.DotvvmKnownTypeKey, name); + + SetDotvvmNameToProperties(schema, underlayingType); + } + } + } + + foreach (var definition in swaggerDoc.definitions) + { + definition.Value.vendorExtensions.Remove(ApiConstants.DotvvmTypeKey); + } + } + + private void SetDotvvmNameToProperties(Schema schema, Type underlayingType) + { + if (schema.properties == null) + { + return; + } + + foreach (var property in schema.properties) + { + SetDotvvmNameToProperty(underlayingType, property.Key, property.Value); + } + } + + private void SetDotvvmNameToProperty(Type type, string propertyName, Schema targetSchema) + { + var propertyInfo = type.GetProperty(propertyName, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); + + if (propertyInfo != null) + { + targetSchema.vendorExtensions.Add(ApiConstants.DotvvmNameKey, propertySerialization.ResolveName(propertyInfo)); + } + } + + public string CreateProperName(Type type, SwaggerDocument swaggerDoc) + { + if (type.GetGenericArguments().Length == 0) + { + return CreateNameWithNamespace(type); + } + + var genericArguments = type.GetGenericArguments().Select(t => CreateNameForGenericParameter(t, swaggerDoc)); + var unmangledName = GetNameWithoutGenericArity(type); + + return type.Namespace + '.' + unmangledName + '<' + string.Join(",", genericArguments) + '>'; + } + + public string CreateNameForGenericParameter(Type type, SwaggerDocument swaggerDoc) + { + var definition = swaggerDoc.definitions + .Where(d => d.Value.vendorExtensions.TryGetValue(ApiConstants.DotvvmTypeKey, out var objType) && (Type)objType == type) + .FirstOrDefault(); + + return definition.Key ?? type.FullName; + } + + public static string GetNameWithoutGenericArity(Type type) => type.Name.Substring(0, type.Name.IndexOf('`')); + + private static string CreateNameWithNamespace(Type type) => type.Namespace + '.' + type.Name; + } +} diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin/Properties/AssemblyInfo.cs b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Properties/AssemblyInfo.cs similarity index 100% rename from src/DotVVM.Framework.Api.Swashbuckle.Owin/Properties/AssemblyInfo.cs rename to src/DotVVM.Framework.Api.Swashbuckle.Owin.old/Properties/AssemblyInfo.cs diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/SwashbuckleExtensions.cs b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/SwashbuckleExtensions.cs new file mode 100644 index 0000000000..41f7df63cb --- /dev/null +++ b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/SwashbuckleExtensions.cs @@ -0,0 +1,26 @@ +using System; +using DotVVM.Core.Common; +using DotVVM.Framework.Api.Swashbuckle.Owin.Filters; +using DotVVM.Framework.ViewModel; +using Swashbuckle.Application; +using Swashbuckle.Swagger; + +namespace DotVVM.Framework.Api.Swashbuckle.Owin +{ + public static class SwashbuckleExtensions + { + /// + /// Confgures Swaschbuckle to provide additional metadata in methods which use FromQuery attribute so the API provided by DotVVM API generator is easier to use. + /// + public static void EnableDotvvmIntegration(this SwaggerDocsConfig options, Action configureOptions = null) + { + var apiOptions = new DotvvmApiOptions(); + configureOptions?.Invoke(apiOptions); + + var propertySerialization = new DefaultPropertySerialization(); + options.OperationFilter(() => new AddAsObjectAnnotationOperationFilter(propertySerialization)); + options.SchemaFilter(() => new AddTypeToModelSchemaFilter()); + options.DocumentFilter(() => new HandleKnownTypesDocumentFilter(apiOptions, propertySerialization)); + } + } +} diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin/app.config b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/app.config similarity index 100% rename from src/DotVVM.Framework.Api.Swashbuckle.Owin/app.config rename to src/DotVVM.Framework.Api.Swashbuckle.Owin.old/app.config diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin/packages.config b/src/DotVVM.Framework.Api.Swashbuckle.Owin.old/packages.config similarity index 100% rename from src/DotVVM.Framework.Api.Swashbuckle.Owin/packages.config rename to src/DotVVM.Framework.Api.Swashbuckle.Owin.old/packages.config diff --git a/src/DotVVM.Framework.Api.Swashbuckle.Owin/DotVVM.Framework.Api.Swashbuckle.Owin.csproj b/src/DotVVM.Framework.Api.Swashbuckle.Owin/DotVVM.Framework.Api.Swashbuckle.Owin.csproj index 669b4db10a..067be3cc03 100644 --- a/src/DotVVM.Framework.Api.Swashbuckle.Owin/DotVVM.Framework.Api.Swashbuckle.Owin.csproj +++ b/src/DotVVM.Framework.Api.Swashbuckle.Owin/DotVVM.Framework.Api.Swashbuckle.Owin.csproj @@ -1,84 +1,32 @@ - - - + + - Debug - AnyCPU - {54AECFE5-AF60-425E-A022-8233D276D3C6} - Library - Properties - DotVVM.Framework.Api.Swashbuckle.Owin - DotVVM.Framework.Api.Swashbuckle.Owin - v4.6.1 - 512 + net451 + DotVVM.Api.Swashbuckle.Owin + 2.0.0-preview08-28084 + RIGANTI + Swashbuckle.AspNetCore extensions for DotVVM. + false + dotvvm;asp.net;mvvm;owin;dotnetcore;dnx + https://dotvvm.com/Content/images/icons/icon-blue-64x64.png + https://github.com/riganti/dotvvm/blob/master/LICENSE + false + false + false + false + false + false + false + false + true - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.1.0.0\lib\netstandard1.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll - - - ..\packages\Microsoft.Extensions.Options.1.0.0\lib\netstandard1.0\Microsoft.Extensions.Options.dll - - - ..\packages\Microsoft.Extensions.Primitives.1.0.0\lib\netstandard1.0\Microsoft.Extensions.Primitives.dll - - - ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll - - - ..\packages\Swashbuckle.Core.5.6.0\lib\net40\Swashbuckle.Core.dll - - - - - - ..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll - - - - ..\packages\Microsoft.AspNet.WebApi.Core.4.0.20710.0\lib\net40\System.Web.Http.dll - - - - - - - - - - - - - - - - + - - + + - - {45fa2f43-d92b-4a9b-9b93-9ab519ad0127} - DotVVM.Core - + - - \ No newline at end of file + + diff --git a/src/DotVVM.Samples.BasicSamples.Api.Owin/DotVVM.Samples.BasicSamples.Api.Owin.csproj b/src/DotVVM.Samples.BasicSamples.Api.Owin/DotVVM.Samples.BasicSamples.Api.Owin.csproj index 79b9b5abae..e61968f01c 100644 --- a/src/DotVVM.Samples.BasicSamples.Api.Owin/DotVVM.Samples.BasicSamples.Api.Owin.csproj +++ b/src/DotVVM.Samples.BasicSamples.Api.Owin/DotVVM.Samples.BasicSamples.Api.Owin.csproj @@ -133,7 +133,7 @@ DotVVM.Core - {54aecfe5-af60-425e-a022-8233d276d3c6} + {bd72f6fc-a6ca-4b10-8098-3d27693e25ba} DotVVM.Framework.Api.Swashbuckle.Owin diff --git a/src/DotVVM.sln b/src/DotVVM.sln index c778d18bdb..18bc233213 100644 --- a/src/DotVVM.sln +++ b/src/DotVVM.sln @@ -72,8 +72,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Swagger", "Swagger", "{BA93 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotVVM.Framework.Api.Swashbuckle.AspNetCore", "DotVVM.Framework.Api.Swashbuckle.AspNetCore\DotVVM.Framework.Api.Swashbuckle.AspNetCore.csproj", "{C64B2831-5DB2-4E4A-B3ED-58FEE8790A02}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotVVM.Framework.Api.Swashbuckle.Owin", "DotVVM.Framework.Api.Swashbuckle.Owin\DotVVM.Framework.Api.Swashbuckle.Owin.csproj", "{54AECFE5-AF60-425E-A022-8233D276D3C6}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotVVM.Samples.BasicSamples.Api.Owin", "DotVVM.Samples.BasicSamples.Api.Owin\DotVVM.Samples.BasicSamples.Api.Owin.csproj", "{5B5B07E7-BC20-4168-BE55-CF9414575D47}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotVVM.Samples.BasicSamples.Api.Common", "DotVVM.Samples.BasicSamples.Api.Common\DotVVM.Samples.BasicSamples.Api.Common.csproj", "{E6072462-B15A-4C3E-B3DC-61859DAFB1AF}" @@ -82,6 +80,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotVVM.Framework.Api.Swashb EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotVVM.Framework.Api.Swashbuckle.AspNetCore.Tests", "DotVVM.Framework.Api.Swashbuckle.AspNetCore.Tests\DotVVM.Framework.Api.Swashbuckle.AspNetCore.Tests.csproj", "{7E3DCB6E-CEE8-4760-B19A-E23250DB7CC1}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotVVM.Framework.Api.Swashbuckle.Owin", "DotVVM.Framework.Api.Swashbuckle.Owin\DotVVM.Framework.Api.Swashbuckle.Owin.csproj", "{BD72F6FC-A6CA-4B10-8098-3D27693E25BA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -376,18 +376,6 @@ Global {C64B2831-5DB2-4E4A-B3ED-58FEE8790A02}.Release|x64.Build.0 = Release|Any CPU {C64B2831-5DB2-4E4A-B3ED-58FEE8790A02}.Release|x86.ActiveCfg = Release|Any CPU {C64B2831-5DB2-4E4A-B3ED-58FEE8790A02}.Release|x86.Build.0 = Release|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Debug|x64.ActiveCfg = Debug|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Debug|x64.Build.0 = Debug|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Debug|x86.ActiveCfg = Debug|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Debug|x86.Build.0 = Debug|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Release|Any CPU.Build.0 = Release|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Release|x64.ActiveCfg = Release|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Release|x64.Build.0 = Release|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Release|x86.ActiveCfg = Release|Any CPU - {54AECFE5-AF60-425E-A022-8233D276D3C6}.Release|x86.Build.0 = Release|Any CPU {5B5B07E7-BC20-4168-BE55-CF9414575D47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5B5B07E7-BC20-4168-BE55-CF9414575D47}.Debug|Any CPU.Build.0 = Debug|Any CPU {5B5B07E7-BC20-4168-BE55-CF9414575D47}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -436,6 +424,18 @@ Global {7E3DCB6E-CEE8-4760-B19A-E23250DB7CC1}.Release|x64.Build.0 = Release|Any CPU {7E3DCB6E-CEE8-4760-B19A-E23250DB7CC1}.Release|x86.ActiveCfg = Release|Any CPU {7E3DCB6E-CEE8-4760-B19A-E23250DB7CC1}.Release|x86.Build.0 = Release|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Debug|x64.ActiveCfg = Debug|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Debug|x64.Build.0 = Debug|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Debug|x86.ActiveCfg = Debug|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Debug|x86.Build.0 = Debug|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Release|Any CPU.Build.0 = Release|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Release|x64.ActiveCfg = Release|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Release|x64.Build.0 = Release|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Release|x86.ActiveCfg = Release|Any CPU + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -459,11 +459,11 @@ Global {F35863EA-2C56-4E10-A861-F5AA0633A0CB} = {B760209E-57D7-4AEF-A726-69F73BBE52C0} {6FB13914-3207-45D6-95A7-1C7B0A3CA5D3} = {13011738-A4B3-47B0-9E50-C0323EB19F76} {C64B2831-5DB2-4E4A-B3ED-58FEE8790A02} = {BA93154A-93F1-4302-A994-824693AE7C46} - {54AECFE5-AF60-425E-A022-8233D276D3C6} = {BA93154A-93F1-4302-A994-824693AE7C46} {5B5B07E7-BC20-4168-BE55-CF9414575D47} = {13011738-A4B3-47B0-9E50-C0323EB19F76} {E6072462-B15A-4C3E-B3DC-61859DAFB1AF} = {13011738-A4B3-47B0-9E50-C0323EB19F76} {CDAA2A06-2070-4F85-BD35-8C910013FB77} = {B760209E-57D7-4AEF-A726-69F73BBE52C0} {7E3DCB6E-CEE8-4760-B19A-E23250DB7CC1} = {B760209E-57D7-4AEF-A726-69F73BBE52C0} + {BD72F6FC-A6CA-4B10-8098-3D27693E25BA} = {BA93154A-93F1-4302-A994-824693AE7C46} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BD6D794B-1553-4534-83EA-14041C0F7F34} diff --git a/src/Tools/build/publish.ps1 b/src/Tools/build/publish.ps1 index b39f0d6275..eef392a366 100644 --- a/src/Tools/build/publish.ps1 +++ b/src/Tools/build/publish.ps1 @@ -104,7 +104,9 @@ $packages = @( [pscustomobject]@{ Package = "DotVVM.Owin"; Directory = "DotVVM.Framework.Hosting.Owin" }, [pscustomobject]@{ Package = "DotVVM.AspNetCore"; Directory = "DotVVM.Framework.Hosting.AspNetCore" }, [pscustomobject]@{ Package = "DotVVM.CommandLine"; Directory = "DotVVM.CommandLine" }, - [pscustomobject]@{ Package = "DotVVM.Compiler.Light"; Directory = "DotVVM.Compiler.Light" } + [pscustomobject]@{ Package = "DotVVM.Compiler.Light"; Directory = "DotVVM.Compiler.Light" }, + [pscustomobject]@{ Package = "DotVVM.Api.Swashbuckle.AspNetCore"; Directory = "DotVVM.Framework.Api.Swashbuckle.AspNetCore" }, + [pscustomobject]@{ Package = "DotVVM.Api.Swashbuckle.Owin"; Directory = "DotVVM.Framework.Api.Swashbuckle.Owin" } ) function PublishTemplates() {