【发布时间】:2016-11-30 10:18:56
【问题描述】:
我知道可以通过 2 种不同的方式构建/发布 .NET Core 应用程序,即:便携式应用程序 ("type": "platform") 和自包含应用程序 ("type": "build")。
当我使用dotnet new 创建一个新应用程序时,默认情况下会为便携式应用程序设置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 恢复包...
日志:在 C:\temp\testproj\project.json 中恢复工具 'dotnet-compile-fsc' 的包...
log : 锁定文件没有改变。跳过锁定文件写入。路径:C:\temp\testproj\project.lock.json
日志:C:\temp\testproj\project.json
log : 恢复在 1973 毫秒内完成。
找不到与以下目标运行时之一兼容的框架“.NETCoreApp,Version=v1.1”的运行时目标:“win10-x64、win81-x64、win8-x64、win7-x64”。可能的原因:
项目尚未恢复或恢复失败-运行
dotnet restore该项目未在“运行时”部分列出“win10-x64、win81-x64、win8-x64、win7-x64”之一。
您可能正在尝试发布不受支持的库。使用
dotnet pack分发库。
为了让它工作,我可以设置在project.json 中添加一个runtimes 部分,这会将我当前机器的架构列为受支持的架构之一。
问题是:
有没有一种方法可以将应用程序发布为独立的和可移植的,而无需每次都更改 project.json?
【问题讨论】:
标签: .net-core