2

为什么 Visual Studio 发布空的 app.runtimeconfig.json?

重现步骤

  1. 发布 .net core app 2.2 项目。
  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 --info 输出:

 Џ ЄҐв 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从独立的发布设置中生成有效的?

4

0 回答 0