2016-11-30 43 views
1

我知道这是不可能建立/两种不同的方式,即发布.NET核心应用:便携式应用"type": "platform")和独立的应用程序"type": "build")。配置.netcore项目为便携式,但发布为自足

当我创建使用dotnet newproject.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恢复& & DOTNET运行

log:为C:\ temp \ testproj \ project.json恢复软件包...

log:在C:\ temp \ testproj \ project.json中恢复工具'dotnet-compile-fsc'的软件包。 。

log:锁定文件没有没有改变。跳过锁定文件写入。路径:C:\ TEMP \ testproj \ project.lock.json

日志:C:\ TEMP \ testproj \ project.json

日志:在1973ms恢复完成。

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

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

  2. 该项目未列出的“win10-x64的一个,win81-64,win8的-64,Win7的-64 '在'运行时间'部分。

  3. 您可能试图发布不支持的库。使用dotnet pack来分发库。

,并使其工作,我可以设置添加一个runtimes部分project.json,其中会列出我目前该机的架构作为支持之一。

的问题是: 有没有一种方法来发布应用程序既作为独立的,不改变每次project.json便携式?

回答

0

您可以在project.jsonscripts部分执行此操作。您有4个活动 - precompile,postcompile,prepublishpostpublish。在任何你想要像脚本可以(例如有两个procet.json,更换和dotnet publish与他们执行)

您铁道部的CanRead在https://docs.microsoft.com/pl-pl/dotnet/articles/core/tools/project-json#scripts

+0

scripts节谢谢您的回答。这与我想象的解决方案会有些不同。我可以通过将这种逻辑添加到构建脚本来实现相同的行为。我虽然有没有两个不同的project.json文件的方式。 – derwasp