有人可以请帮助,因为我有一个噩梦在OSX上构建.net核心控制台项目。dotnet核心 - 无法建立/发布OSX自包含的可执行文件
我用的dotnet - 版本1.0.1
当我尝试从我的终端运行以下命令
dotnet publish --framework netcoreapp1.1 --runtime osx.10.11-x64
我得到以下错误:
\project.assets.json' doesn't have a target for '.NETCoreApp,Version=v1.1/osx.10.11-x64
我已经搜索了这一点,所有的文档都提到将运行时间添加到project.json中,就像这样。
"runtimes": {
"win10-x64": {},
"win8-x64": {},
"osx.10.10-x64": {},
"osx.10.11-x64": {
"#import": [ "osx.10.11", "osx.10.10-x64" ]
},
"osx.10.12-x64": {
"#import": [ "osx.10.12", "osx.10.11-x64" ]
},
"debian.8-x64": {}
},
但我没有一个projects.json只有一个projects.assets.json这是编译器似乎看起来。
经过进一步调查
我发现这个链接 - 似乎project.json不再使用!
https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json-to-csproj
这似乎疯狂的我吗?!?!
反正这表明增加运行时间到的.csproj
我已经做了
PropertyGroup>
<RuntimeIdentifiers>win7-x64;osx.10-11-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
</PropertyGroup>
我仍然得到同样的错误。
所以我有几个问题。
为什么编译器查找projects.assets.json? 我试过把运行时添加到这个文件,但仍然没有看到它。任何想法为什么?
为什么编译器没有看到projects.json或csproj文件,其他人在网上似乎认为它应该看?
如何更改编译器的外观?
感觉就像我失去了一些简单的东西。
顺便说一句,如果我只是使用DOTNET {项目名称}运行从我的控制台项目运行得很好(我的Mac上),这样就与构建等没有问题..
在此先感谢
更新---
明白了这一点。看来我需要拥有这个在我project.assets.json文件
"runtimes": {
"osx.10-11-x64": {
"#import": []
},
"ubuntu.16.04-x64": {
"#import": []
},
"win7-x64": {
"#import": []
}
}
通知OSX运行时间osx.10-11-x不osx.10.11-64。这个错字似乎在网络上无处不在。也许它已经改变了。
所以现在编译,我得到一个发布的文件夹。
但是现在尝试运行此提供了以下错误
A fatal error was encountered. The library 'libhostpolicy.dylib' required to execute the application was not found in 'xxx/xxx'.
用Google搜索这一点,并没有任何的建议或原因似乎与我的情况。我已经做了DOTNET恢复,建造和发布正确的版本等。还我的部署类型不是“平台”,这似乎是另一个原因这个错误。
更新2 !!!!得到它的工作 - 几乎!
所以原来由于某些原因,runtimeconfig.json文件是空
添加此
{
"runtimeOptions": {
"framework": {
"name": "Microsoft.NETCore.App",
"version": "1.1.0"
}
}
}
所以需要 - 未来关键是要找出为什么这个没有被自动的完成编译器!
对于自包含的应用,runtimeconfig指定
<OutputType>Exe</OutputType>
。 json应该是空的。添加“框架”部分使得应用程序不再是“独立的”。相反,它现在是“依赖于框架”,这意味着您的应用程序依赖于共享的系统范围内的.NET Core版本来存在于目标系统上。 –你不应该编辑'project.assets.json'文件。这是一个NuGet使用输入输入的中间文件。的csproj。 SDK的其余部分读取此文件以查找NuGet恢复的所有资产。 –