Почему визуальная студия публикует app.runtimeconfig.json с пустыми параметрами? - PullRequest
0 голосов
/ 16 апреля 2019

Почему Visual Studio публикует пустой app.runtimeconfig.json?

Шаги для воспроизведения

  1. Публикация .net core app 2.2 project.
  2. Настройки профиля:
Configuration: Release|x64
TargetFramework: netcoreapp2.2
Deployment Mode:Self-contained
TargetRuntime:win-x64
  1. Ожидаемое поведение

app.runtimeconfig.json:

{ "runtimeOptions": { "tfm": "netcoreapp2.2", "framework": { "name": "Microsoft.NETCore.App", "version": "2.2.0" } } }

Фактическое поведение

 {
  "runtimeOptions": {}
 }

Данные об окружающей среде.

dotnet - вывод информации:

 Џ ЄҐв SDK ¤«п .NET Core (®ва ¦ ойЁ© «оЎ®© global.json):
    Version: 2.2.101
    Commit: 236713b
    ‘।  ўлЇ®«­Ґ­Ёп:
    OS Name: Windows
    OS Version: 6.1.7601
    OS Platform: Windows
    RID: win7-x64
    Base Path: C:\Program Files\dotnet\sdk\2.2.101\
    Host (useful for support):
    Version: 2.2.4
    Commit: f95848e524
    .NET Core SDKs installed:
    1.1.8 [C:\Program Files\dotnet\sdk]
    2.1.104 [C:\Program Files\dotnet\sdk]
    2.1.200 [C:\Program Files\dotnet\sdk]
    2.1.201 [C:\Program Files\dotnet\sdk]
    2.1.202 [C:\Program Files\dotnet\sdk]
    2.1.302 [C:\Program Files\dotnet\sdk]
    2.1.402 [C:\Program Files\dotnet\sdk]
    2.1.403 [C:\Program Files\dotnet\sdk]
    2.1.500 [C:\Program Files\dotnet\sdk]
    2.1.502 [C:\Program Files\dotnet\sdk]
    2.1.503 [C:\Program Files\dotnet\sdk]
    2.1.504 [C:\Program Files\dotnet\sdk]
    2.1.505 [C:\Program Files\dotnet\sdk]
    2.1.602 [C:\Program Files\dotnet\sdk]
    2.2.101 [C:\Program Files\dotnet\sdk]
    2.2.102 [C:\Program Files\dotnet\sdk]
    2.2.203 [C:\Program Files\dotnet\sdk]
    .NET Core runtimes installed:
    Microsoft.AspNetCore.All 2.1.2 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.1.4 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.1.5 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.1.6 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.1.7 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.1.8 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.1.9 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.2.0 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.2.1 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.2.4 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.App 2.1.2 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.1.4 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.1.5 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.1.6 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.1.7 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.1.8 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.1.9 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.2.0 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.2.1 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.2.4 [C:\Program 
    Files\dotnet\shared\Microsoft.AspNetCore.App]
    Microsoft.NETCore.App 1.0.10 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 1.1.7 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.0.6 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.0.7 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.0.9 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.2 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.4 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.5 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.6 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.7 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.8 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.9 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.2.0 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.2.1 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.2.4 [C:\Program 
    Files\dotnet\shared\Microsoft.NETCore.App]

.csproj:

 <Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../../../.build/build.props"></Import>
    <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
     <SccAuxPath>SAK</SccAuxPath>
     <SccLocalPath>SAK</SccLocalPath>
     </PropertyGroup>
      <PropertyGroup>
     <OutputType>Exe</OutputType>
     <TargetFramework>netcoreapp2.2</TargetFramework>
    <ApplicationIcon />
    <StartupObject>MyService.Program</StartupObject>
    <LangVersion>7.1</LangVersion>
    <Description>MyService</Description>
    <AssemblyName>MyService</AssemblyName>
    <ApplicationIcon />
    <FileVersion>1.0.0.$(BuildNumber)</FileVersion>
    <AssemblyVersion>$(FileVersion)</AssemblyVersion>
    </PropertyGroup>
    <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Hosting" 
    Version="2.2.0" />
    <PackageReference 
    Include="System.ServiceProcess.ServiceController" 
     Version="4.5.0" />
    </ItemGroup>
    <ItemGroup>
   <ProjectReference Include="..\My\Monitel.My.csproj" />
   </ItemGroup>      
   </Project>

Итак, если я изменяю развертывание на FrameworkDependent, он генерирует действительный app.runtimeconfig.json.

Но, если я развернул и запустил автономный - он генерировал пустые параметры, и я не могу запустить exe-файл! Это говорит о том, что требуется hostpolicy dll. Почему?

А когда я добавляю runtimeOptions (раздел «Ожидаемое поведение») в файл app.runtimeconfig.json - мое приложение работает!

Итак, почему я не могу сгенерировать действительные app.runtimeconfig.json из автономных настроек публикации?

...