rules_dotnet icon indicating copy to clipboard operation
rules_dotnet copied to clipboard

Issues loading types when mixing and matching net8.0 and netstandard2.1

Open njlr opened this issue 1 month ago • 2 comments

A binary:

load("@rules_dotnet//dotnet:defs.bzl", "fsharp_binary")

fsharp_binary(
  name = "app",
  srcs = [
    "Program.fs",
  ],
  target_frameworks = [
    "net8.0",
  ],
  deps = [
    "@paket.main//fsharp.core",
    "@paket.main//awssdk.core",
    "@paket.main//awssdk.s3",
    "//utils",
  ],
  treat_warnings_as_errors = True,
)

And a library:

load("@rules_dotnet//dotnet:defs.bzl", "fsharp_library")

fsharp_library(
  name = "utils",
  srcs = [
    "Utils.fs",
  ],
  target_frameworks = [
    "netstandard2.1",
  ],
  deps = [
    "@paket.main//fsharp.core",
    "@paket.main//awssdk.core",
    "@paket.main//awssdk.s3",
  ],
  treat_warnings_as_errors = True,
  visibility = [
    "//visibility:public",
  ],
)

Leads to this runtime exception:

Unhandled exception. System.TypeLoadException: Virtual static method 'CreateDefaultClientConfig' is not implemented on type 'Amazon.DynamoDBv2.AmazonDynamoDBClient' from assembly 'AWSSDK.DynamoDBv2, Version=4.0.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604'.

If the targets are aligned, then it will work:

load("@rules_dotnet//dotnet:defs.bzl", "fsharp_library")

fsharp_library(
  name = "utils",
  srcs = [
    "Utils.fs",
  ],
  target_frameworks = [
-    "netstandard2.1",
+   "net8.0",
  ],
  deps = [
    "@paket.main//fsharp.core",
    "@paket.main//awssdk.core",
    "@paket.main//awssdk.s3",
  ],
  treat_warnings_as_errors = True,
  visibility = [
    "//visibility:public",
  ],
)

Issue appears with rules_dotnet versions 0.20.5 and 0.21.5.

Full repro here: https://github.com/njlr/rules_dotnet_aws_repro

njlr avatar Nov 19 '25 13:11 njlr

The repro is not public

purkhusid avatar Nov 20 '25 09:11 purkhusid

The repro is not public

My mistake, please try now?

njlr avatar Nov 20 '25 09:11 njlr