Linux下 .Net 踩过的一些坑
-
dotnet framework / dotnet standard / dotnet core / dotnet 傻傻分不清楚 Ref: MSDN
-
版本 -> 语言特性
匹配但又不完全匹配 .NetFramework4.5.2 不支持C#8.0,但如果在.csproj中加上在
8.0 或preview 就可以使用一部分特性,可惜最好用的Range/Indices却不能用。 Ref: StackOverflow,MSDN -
不使用 dotnet build/publish 命令
编译: dotnet /usr/lib64/dotnet/sdk/
/Roslyn/bincore/csc.dll 后面就是常规的CSC参数 例如 -lib:/usr/lib64/dotnet/shared/Microsoft.NETCore.App/<sdk_version>/
或-r
运行:
dotnet exec --runtimeconfig /usr/lib64/dotnet/sdk/<sdk_version>/dotnet.runtimeconfig.json <exe_file>
Ref: StackOverflow
-
打包成单个文件(带运行时)
项目文件(.csproj)中
下增加 <PublishSingleFile>true</PublishSingleFile> <SelfContained>true</SelfContained> <RuntimeIdentifier>linux-x64</RuntimeIdentifier> <!-- for: Unable to find package Microsoft.NETCore.App.Runtime.linux-x64 with version (= 6.0.0-rc.2.21470.23) --> <!-- NU1102: - Found 98 version(s) in nuget.org [ Nearest version: 6.0.0-rc.2.21480.10 ] --> <!-- https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#runtimeframeworkversion --> <RuntimeFrameworkVersion>6.0.9</RuntimeFrameworkVersion>
RID(RuntimeIdentifier) Ref: MSDN
RuntimeFrameworkVersion是为了避免Nuget.org上下不到你SDK版本对应的运行时。
-
不想使用在线Nuget
项目目录下新建 nuget.config。内容:
<configuration> <packageSources> <clear> <add key="local" value="<path>" </packageSources> </configuration>
将下载好的.nuget包放进
<path>
-
使用Omnisharp-Vim 如果遇到Found 0 Instance问题
-
let g:OmniSharp_server_use_net6 = 1
然后重装:OmniSharpInstall
-
如果你的sdk_version带
rc
(预览版本),新建 ~/.omnisharp/omnisharp.json
{ "SDK": { "includePrereleases": true } }
-
Leave a comment
Note : Your comment will not be displayed until a Github PullRequest have been merged.