c# - 基于操作系统的不同NuGet软件包

标签 c# .net-core db2 nuget

我在dotnet 2.1中有一个测试项目,该项目需要跨多个平台(特别是基于Windows和linux的系统)以及访问DB2数据库的工作。

IBM为不同的操作系统提供了单独的NuGet软件包:

  • IBM.Data.DB2.Core
  • IBM.Data.DB2.Core-lnx
  • IBM.Data.DB2.Core-osx

  • 如何在.csproj文件中指定要基于操作系统使用不同的软件包?

    可以传入RuntimeIdentifier(dotnet publish ... -r linux-x64),但是我不确定如何在csproj内部使用该信息。我也不反对使用Choose/When构造,但是不知道如何推断哪个系统正在尝试构建项目。

    最佳答案

    我最终使用了ConfigurationChoose/When范例。

    一个简单的.csproj示例是

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <Configurations>Debug;Release;Docker</Configurations>
        <Platforms>AnyCPU;x64</Platforms>
      </PropertyGroup>
    
      ... the rest of your .csproj and dependencies ...
    
      <Choose>
        <When Condition=" '$(Configuration)'=='Docker' ">
          <ItemGroup>
            <PackageReference Include="IBM.Data.DB2.Core-lnx" Version="1.2.2.100" />
          </ItemGroup>
        </When>
        <Otherwise>
          <ItemGroup>
            <PackageReference Include="IBM.Data.DB2.Core" Version="1.2.2.100" />
          </ItemGroup>
        </Otherwise>
      </Choose>
    
    </Project>
    

    在命令行上,我将运行:dotnet build /your/project.csproj -c <yourConfigurationName>

    我发现this site对于帮助在Visual Studio 2017中进行设置非常有用。

    关于c# - 基于操作系统的不同NuGet软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52612790/

    相关文章:

    c# - 向 IEnumerable 等接口(interface)添加通用扩展方法

    c# - 如何动态更改 UWP 的 XAML 资源值

    javascript - 通过ajax下载文件会导致文件损坏

    c# - .NET Core - 全局化和本地化 - 类库

    c# - dnSpy 显示异步方法的奇怪反汇编代码

    函数 slqastrt、sqlacall、sqlastop 上的 Ubuntu DB2 gcc prep 错误

    c# - 如何将 void 同步方法转换为异步方法?

    c# - 传递页面的查询字符串时未触发 AjaxFileUpload1_UploadComplete 事件

    java - DB2 Java 存储过程 NoSuchMethodError

    sql-server - 不同数据库中的位图索引支持