You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Spinnaker SDK的C# .NET8.0跨平台项目配置求助(Windows-x64与NVIDIA Jetson Orin Linux ARM64)

针对Jetson Orin(Ubuntu 20.04 ARM64)配置.NET 8 + Spinnaker SDK的核心指引

我来帮你梳理下跨平台配置的关键步骤,结合Teledyne官方实践和跨平台.NET的经验,给你几个核心方向:

1. 先在Jetson Orin上部署ARM64版Spinnaker SDK

这是基础前提,必须先确保硬件端的SDK环境正常:

  • 从Teledyne官网下载Ubuntu 20.04 ARM64架构的Spinnaker安装包(尽量和你Windows端用的SDK大版本一致,比如v2.x系列,避免版本兼容问题)
  • 执行安装命令:
    sudo dpkg -i spinnaker-*.deb
    sudo apt-get install -f
    
  • 安装完成后验证:运行spin-camera-list命令(或GUI工具SpinView),确认能正常识别相机设备。

2. 配置.csproj实现跨平台条件性依赖

核心是通过**运行时标识符(RID)**区分Windows和Linux平台,加载对应环境的Spinnaker组件,修改你的项目文件如下:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <!-- 明确指定跨平台目标RID -->
    <RuntimeIdentifiers>win-x64;linux-arm64</RuntimeIdentifiers>
    <!-- 可选:设置自包含发布,无需目标机器预装.NET环境 -->
    <SelfContained>true</SelfContained>
  </PropertyGroup>

  <!-- Windows x64平台的依赖配置 -->
  <ItemGroup Condition="'$(RuntimeIdentifier)' == 'win-x64'">
    <Reference Include="SpinnakerNET">
      <HintPath>C:\Program Files\Teledyne\Spinnaker\bin64\vs2015\SpinnakerNET_v140.dll</HintPath>
    </Reference>
    <!-- 复制Windows原生dll到输出目录 -->
    <None Include="C:\Program Files\Teledyne\Spinnaker\bin64\*.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

  <!-- Linux ARM64平台的依赖配置 -->
  <ItemGroup Condition="'$(RuntimeIdentifier)' == 'linux-arm64'">
    <!-- 引用Jetson上的SpinnakerNET程序集(默认路径) -->
    <Reference Include="SpinnakerNET">
      <HintPath>/usr/lib/spinnaker/dotnet/SpinnakerNET.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <!-- 复制Linux原生库到输出目录 -->
    <None Include="/usr/lib/spinnaker/lib/*.so*">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

关键提示:通过Condition属性实现平台差异化依赖,避免编译时的跨平台冲突。

3. 针对Linux ARM64的编译与发布

有两种方式可选:

方式一:Windows远程跨平台发布

在Windows终端执行命令,直接生成Jetson可用的发布包:

dotnet publish -c Release -r linux-arm64

发布完成后,将bin/Release/net8.0/linux-arm64/publish目录下的所有文件复制到Jetson上即可。

方式二:Jetson本地编译

先在Jetson上安装.NET 8 SDK:

  1. 添加微软官方源:
    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  2. 安装.NET 8 SDK:
    sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0
    
  3. 克隆你的项目到Jetson,执行编译/发布命令:
    dotnet publish -c Release
    

4. Jetson端运行时的环境配置

  • 库路径配置:确保系统能找到Spinnaker的原生库,可临时设置环境变量:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/your/publish/directory
    ./YourAppName
    
    或者将路径写入~/.bashrc实现永久生效。
  • 相机权限配置:避免程序需要root权限才能访问相机:
    sudo usermod -aG video $USER
    
    执行后重新登录用户即可生效。

5. 排坑调试建议

  • 如果程序启动报错,先用ldd YourAppName命令检查依赖的原生库是否全部存在,缺失的库需从Spinnaker安装目录补充。
  • 确保Spinnaker SDK版本和SpinnakerNET程序集版本严格匹配(比如Spinnaker 2.6.x对应SpinnakerNET v2.6.x)。
  • 在Jetson上运行dotnet --info确认.NET 8运行时是否正确安装。

内容的提问来源于stack exchange,提问作者bone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 12:42:43