将.netcore项目配置为可移植,但发布为自包含

时间:2016-11-30 10:18:56

标签: .net-core

我知道可以通过两种不同的方式构建/发布.NET Core应用程序,即:便携式应用程序"type": "platform")和自包含应用程序"type": "build")。

当我使用dotnet new创建新应用程序时,默认情况下会为Portable应用程序设置project.json

"frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        },
        "Microsoft.FSharp.Core.netcore": "1.0.0-alpha-160629"
      }
    }
  }

这意味着我的应用程序将依赖于运行时,它安装在计算机上,我将运行该应用程序。

但是如果我决定,我想以便携式和自包含模式发布这个应用程序呢? 当我将类型设置为build并尝试运行应用程序时,我收到一个错误,我猜,这是错误的:

  

C:\ temp \ testproj> dotnet restore&& dotnet run

     

日志:恢复C:\ temp \ testproj \ project.json ...

的包      

日志:恢复工具包#dot; dotnet-compile-fsc'在C:\ temp \ testproj \ project.json ...

     

日志:锁定文件未更改。跳过锁定文件写入。路径:C:\ temp \ testproj \ project.lock.json

     

log:C:\ temp \ testproj \ project.json

     

日志:恢复于1973年完成。

     

找不到框架的运行时目标' .NETCoreApp,Version = v1.1'兼容其中一个目标运行时:' win10-x64,win81-x64,win8-x64,win7-x64'。可能的原因:

     
      
  1. 项目尚未恢复或恢复失败 - 运行dotnet restore

  2.   
  3. 该项目未列出' win10-x64,win81-x64,win8-x64,win7-x64'在'运行时'部分。

  4.   
  5. 您可能正在尝试发布不受支持的库。使用dotnet pack分发库。

  6.   

为了使其正常工作,我可以在runtimes中设置添加project.json部分,该部分会将我当前计算机的体系结构列为受支持的部分之一。

问题是: 有没有办法将应用程序发布为自包含和可移植,而不是每次都更改project.json

1 个答案:

答案 0 :(得分:0)

您可以在scripts的{​​{1}}部分执行此操作。您有4个活动 - project.jsonprecompilepostcompileprepublish。在脚本中,您可以随心所欲(例如,有两个postpublish,通过procet.json替换并执行它们)

您可以通过https://docs.microsoft.com/pl-pl/dotnet/articles/core/tools/project-json#scripts

了解dotnet publish部分