如何在没有App.runtimeconfig.json的情况下构建App?

时间:2019-11-22 13:07:45

标签: .net-core configuration-files

当我在Visual Studio中以App模式构建Release时,它将在Release文件夹中生成以下文件:

App.exe 
App.dll 
App.runtimeconfig.json 
App.pdb
App.deps.json
App.runtimeconfig.dev.json

如果我从硬盘上的其他位置取出前三个文件,然后双击App.exe,它将启动;如果删除App.runtimeconfig.json,则不会!

我只想将App.exeApp.dll保留在我的文件夹中,该怎么做才能摆脱该App.runtimeconfig.json


编辑

这是App.runtimeconfig.json的内容:

{
  "runtimeOptions": {
    "tfm": "netcoreapp3.0",
    "framework": {
      "name": "Microsoft.WindowsDesktop.App",
      "version": "3.0.0"
    }
  }
}

编辑

这是我现在在App.csproj文件的PropertyGroup中所保存的内容:

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PublishTrimmed>true</PublishTrimmed>
    <PublishReadyToRun>true</PublishReadyToRun>
    <PublishSingleFile>true</PublishSingleFile>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <UseWPF>true</UseWPF>
  </PropertyGroup>

现在我在Visual Studio的Error List中得到了这个

Error   NETSDK1047  Assets file 'C:\Users\Emon\source\repos\SocketTest\App\obj\project.assets.json' doesn't have a target for '.NETCoreApp,Version=v3.0/win-x64'. Ensure that restore has run and that you have included 'netcoreapp3.0' in the TargetFrameworks for your project. You may also need to include 'win-x64' in your project's RuntimeIdentifiers. App C:\Program Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets    234

当我右键单击Project时,我看到:Build,Clean,Rebuild等,没有还原!


编辑

我首先删除了binobj文件夹,并对<PropertyGroup>进行了重新排序,将<RuntimeIdentifier>放在<TargetFramework>下,现在可以了! / p>

1 个答案:

答案 0 :(得分:1)

如您所见,App.runtimeconfig.json包含运行时信息和使用的.NET Core版本,您不能简单地将其删除。但是在发布应用程序时,您可以通过选择Self-contained部署模式切换到自包含部署

.NET Core引入了修剪结果可执行文件以减小大小的功能。基本上,您需要在项目文件中提供以下属性

<PublishTrimmed>true</PublishTrimmed>
<PublishReadyToRun>true</PublishReadyToRun>
<PublishSingleFile>true</PublishSingleFile>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>

There是一篇很好的文章