如何发布面向linux-musl-x64运行时的Alpine Linux应用?创建发布配置文件时,我无法选择此运行时。我有两个选项:用于Linux部署的linux-x64和linux-arm,没有其他内容。
linux-musl-x64
linux-x64
linux-arm
要添加新的目标运行时,我需要修改哪些内容和位置?
cczfrluj1#
我找到了添加自定义运行时的方法,在项目文件夹中找到了Visual Studio配置文件(在我的例子中是FolderProfile.pubxml),并编辑了RuntimeIdentifier元素:<RuntimeIdentifier>linux-musl-x64</RuntimeIdentifier>这似乎已经奏效了。
RuntimeIdentifier
<RuntimeIdentifier>linux-musl-x64</RuntimeIdentifier>
其他解决方法是在命令提示符下运行该命令:dotnet build --runtime linux-musl-x64还值得一读:https://learn.microsoft.com/en-us/dotnet/core/rid-catalog您可以在runtime.json文件中看到支持的RID列表和RID图,该文件位于dotnet/runtime存储库中。
dotnet build --runtime linux-musl-x64
vdzxcuhz2#
不要使用Windows!请使用Void-Linux或Alpine,你应该提示dotnet publish -c Release -r linux-musl-x64 -p:StaticLink=true --self-contained=true为什么不使用Windows,因为Windows没有musl-libc基础系统,这就是为什么你需要使用Void-Linux或Alpine。Musl-libc基础系统是非常必要的,重要的静态模式,而不必担心加载的文件。如果你在包含静态库时出错,那么你应该复制""clang" ......"并粘贴到新行,用"x86_64-linux-musl-gcc -static"替换"clang",找到-lrt,你想添加-l(library-package),那么你需要删除-pie,直到musl-gcc生成dotnet原生aot可执行文件的新可执行文件。你需要对可执行文件. strip -S bin/Release/net7.0/linux-musl-x64/native/YOUR-OUTPUT-EXECUTABLE进行非剥离。然后你可以检查出ldd bin/Release/net7.0/linux-musl-x64/native/YOUR-OUTPUT-EXECUTABLE它看起来简单的静态单一可执行文件从Dotnet + musl版本。这是真的很容易编译和释放您的Dotnet原生aot结束可执行文件。享受你快乐的编译和快乐的发布😊
dotnet publish -c Release -r linux-musl-x64 -p:StaticLink=true --self-contained=true
""clang" ......"
"x86_64-linux-musl-gcc -static"
"clang"
-lrt
-l(library-package)
-pie
strip -S bin/Release/net7.0/linux-musl-x64/native/YOUR-OUTPUT-EXECUTABLE
ldd bin/Release/net7.0/linux-musl-x64/native/YOUR-OUTPUT-EXECUTABLE
2条答案
按热度按时间cczfrluj1#
我找到了添加自定义运行时的方法,在项目文件夹中找到了Visual Studio配置文件(在我的例子中是FolderProfile.pubxml),并编辑了
RuntimeIdentifier
元素:<RuntimeIdentifier>linux-musl-x64</RuntimeIdentifier>
这似乎已经奏效了。
其他解决方法是在命令提示符下运行该命令:
dotnet build --runtime linux-musl-x64
还值得一读:https://learn.microsoft.com/en-us/dotnet/core/rid-catalog
您可以在runtime.json文件中看到支持的RID列表和RID图,该文件位于dotnet/runtime存储库中。
vdzxcuhz2#
不要使用Windows!请使用Void-Linux或Alpine,你应该提示
dotnet publish -c Release -r linux-musl-x64 -p:StaticLink=true --self-contained=true
为什么不使用Windows,因为Windows没有musl-libc基础系统,这就是为什么你需要使用Void-Linux或Alpine。Musl-libc基础系统是非常必要的,重要的静态模式,而不必担心加载的文件。如果你在包含静态库时出错,那么你应该复制
""clang" ......"
并粘贴到新行,用"x86_64-linux-musl-gcc -static"
替换"clang"
,找到-lrt
,你想添加-l(library-package)
,那么你需要删除-pie
,直到musl-gcc生成dotnet原生aot可执行文件的新可执行文件。你需要对可执行文件.strip -S bin/Release/net7.0/linux-musl-x64/native/YOUR-OUTPUT-EXECUTABLE
进行非剥离。然后你可以检查出ldd bin/Release/net7.0/linux-musl-x64/native/YOUR-OUTPUT-EXECUTABLE
它看起来简单的静态单一可执行文件从Dotnet + musl版本。这是真的很容易编译和释放您的Dotnet原生aot结束可执行文件。享受你快乐的编译和快乐的发布😊