При публикации Visual Studio игнорируются файлы .js в папке Views для .NET Core. - PullRequest
0 голосов
/ 05 июня 2018

Вот шаги:

  1. Создание простого проекта с использованием Базовое веб-приложение ASP.NET шаблон
  2. Публикация его без каких-либо изменений в папке

Если папка Views отсутствует в опубликованном выводе, это потому, что ваша версия .NET Core по умолчанию компилирует представления.Просто добавьте это в .csproj:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
  </PropertyGroup>

и опубликуйте снова.

  1. Теперь добавьте файл Home.js в Views/Default папку
  2. Опубликоватьснова в папку
  3. Как видите, Home.cshtml публикуется в выходной папке, но Home.js нет.

Что здесь не так?Это делает наш механизм развертывания неэффективным, и нам нужно вручную синхронизировать .js файлов.

1 Ответ

0 голосов
/ 05 июня 2018

Соглашения соблюдаются по причине.Это способствует хорошему дизайну приложения.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *Тем не менее, вы правы в том, что ASP.NET Core настраивается и может быть настроен на то, что вы хотите с ним делать, хорошее или плохое.

На самом деле у вас есть две проблемы: 1) файлы вКаталог Views не включен в публикацию и 2) каталог Views не обслуживается .Даже если вам удастся включить статические файлы в публикацию, это пиррова победа, поскольку вы не сможете использовать эти файлы на своих веб-страницах.

Я никак не могу понятьчтобы весь каталог копировался на выход через пользовательский интерфейс - только отдельные файлы.Однако, отредактировав файл своего проекта, вы можете добавить что-то вроде:

<ItemGroup>
    <Content Include="Views\**\*.js" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>

Это просто оставит вас с проблемой фактического обслуживания этих файлов, что становится более проблематичным, так как вы не можете просто обслуживать некоторые файлы,но только целые каталоги.Это означает потенциальную возможность разоблачения чего-либо в каталоге Views.Тем не менее, если вы настаиваете:

app.UseStaticFiles(); // For the wwwroot folder

app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(), "Views")),
    RequestPath = "/Views"
});
...