我知道可以通过两种不同的方式构建/发布.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'。可能的原因:
项目尚未恢复或恢复失败 - 运行
dotnet restore
该项目未列出' win10-x64,win81-x64,win8-x64,win7-x64'在'运行时'部分。
- 醇>
您可能正在尝试发布不受支持的库。使用
dotnet pack
分发库。
为了使其正常工作,我可以在runtimes
中设置添加project.json
部分,该部分会将我当前计算机的体系结构列为受支持的部分之一。
问题是:
有没有办法将应用程序发布为自包含和可移植,而不是每次都更改project.json
?
答案 0 :(得分:0)
您可以在scripts
的{{1}}部分执行此操作。您有4个活动 - project.json
,precompile
,postcompile
,prepublish
。在脚本中,您可以随心所欲(例如,有两个postpublish
,通过procet.json
替换并执行它们)
您可以通过https://docs.microsoft.com/pl-pl/dotnet/articles/core/tools/project-json#scripts
了解dotnet publish
部分