Как включить статические файлы в многоразовый RCL - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь создать RCL, который можно использовать в нескольких проектах ASP.NET Core MVC.Пока все хорошо ... пока я не попытался включить необходимые javascript-коды в RCL.По этой теме практически нет документации.Лучше всего было попробовать этот пример: 5.Окончательное решение

Но я получаю эту ошибку при сборке библиотеки:

enter image description here

Это файл проекта иСтруктура библиотеки:

enter image description here

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 10 ноября 2018

Теперь, когда у меня есть свободное время, я отвечу на свой вопрос.Может быть, это кому-нибудь пригодится.

Наконец-то я решил эту проблему, используя EmmbededResources без EmbeddedFilesManifest, как ianbusko указал в Github .

Сначала я создалрасширение для класса IApplicationBuilder:

namespace Dashboard.Lib.Extensions
{
    public static class IApplicationBuilderExtension
    {
        public static void UseDashboardScripts(this IApplicationBuilder builder)
        {
            var embeddedProvider = new EmbeddedFileProvider(typeof(Areas.Dashboard.ViewComponents.DashboardViewComponent)
                .GetTypeInfo().Assembly, "Dashboard.Lib.Scripts");

            builder.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = embeddedProvider,
                RequestPath = new PathString("/Scripts")
            });
        }
    }
}

Затем я добавил файлы javascript в файл проекта:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <GenerateEmbeddedFilesManifest>false</GenerateEmbeddedFilesManifest>
 </PropertyGroup>

 <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.1" />
    <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="2.1.1" />
 </ItemGroup>

 <ItemGroup>
    <EmbeddedResource Include="Scripts/**/**/**/*" Pack="true" />
 </ItemGroup>

В представлении RCL JavaScript включен следующим образом:

@section Scripts{
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script type="text/javascript" src="~/Scripts/pagination.js"></script>
    <script type="text/javascript" src="~/Scripts/checkdigit-validator.js"></script>
    <script type="text/javascript" src="~/Scripts/rut-validation.js"></script>
}

Наконец, в Statup.cs в основном проекте MVC вам просто нужно включить следующее:

app.UseStaticFiles();
app.UseDashboardScripts();
...