I am trying to upgrade my two AWS based Dotnet projects from .net 6 to .net 8 but I am facing same problem in both of those project. One of the project is using CDK and another one is based on SAM.
I can build both projects without any problem. But if I do sam build or run dotnet lambda deploy-function I get following error:
... publish: BackendApi -> C:workspaceBackendApibinReleasenet8.0linux-arm64BackendApi.dll
... publish: C:Program Filesdotnetsdk8.0.303SdksMicrosoft.NET.SdktargetsMicrosoft.NET.CrossGen.targets(470,5): error : Error:
Failed to load assembly 'AWSSDK.Core' [C:workspaceBackendApiBackendApi.csproj]
... publish: C:Program Filesdotnetsdk8.0.303SdksMicrosoft.NET.SdktargetsMicrosoft.NET.CrossGen.targets(470,5): error :
Internal.TypeSystem.TypeSystemException+FileNotFoundException: Failed to load assembly 'AWSSDK.Core'
[C:workspaceBackendApiBackendApi.csproj]
... publish: C:Program Filesdotnetsdk8.0.303SdksMicrosoft.NET.SdktargetsMicrosoft.NET.CrossGen.targets(470,5): error : at
Internal.TypeSystem.ThrowHelper.ThrowFileNotFoundException(ExceptionStringID, String) + 0x30
[C:workspaceBackendApiBackendApi.csproj]
... publish: C:Program Filesdotnetsdk8.0.303SdksMicrosoft.NET.SdktargetsMicrosoft.NET.CrossGen.targets(470,5): error : at
Internal.TypeSystem.ResolutionFailure.Throw() + 0xf6 [C:workspaceBackendApiBackendApi.csproj]
... publish: C:Program Filesdotnetsdk8.0.303SdksMicrosoft.NET.SdktargetsMicrosoft.NET.CrossGen.targets(470,5): error : at
Internal.TypeSystem.Ecma.EcmaModule.GetMethod(EntityHandle) + 0x80
I have already upgraded to latest visual studio, AWS CLI, SAM and AWS tool kit.. Also, I have tried .Net 8.0.303, 8.0.302, 8.0.301 and 8.0.300 But facing same issue. Here is the .csproj code of one of my project:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<AWSProjectType>Lambda</AWSProjectType>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<!-- Generate ready to run images during publishing to improvement cold starts. -->
<PublishReadyToRun>true</PublishReadyToRun>
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
<GenerateProgramFile>false</GenerateProgramFile>
<SatelliteResourceLanguages>en-US;en</SatelliteResourceLanguages>
<ResourceLanguages>en</ResourceLanguages>
</PropertyGroup>
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
<ExternalConsole>true</ExternalConsole>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Amazon.Lambda.AspNetCoreServer" Version="9.0.0" />
<PackageReference Include="Amazon.Extensions.CognitoAuthentication" Version="2.5.5" />
<PackageReference Include="Amazon.Lambda.Core" Version="2.2.0" />
<PackageReference Include="Amazon.Lambda.APIGatewayEvents" Version="2.7.1" />
<PackageReference Include="Amazon.Lambda.Serialization.Json" Version="2.2.2" />
<PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.4.3" />
<PackageReference Include="AWSSDK.CloudFormation" Version="3.7.400.2" />
<PackageReference Include="AWSSDK.CognitoIdentityProvider" Version="3.7.400.2" />
<PackageReference Include="AWSSDK.EventBridge" Version="3.7.401" />
<PackageReference Include="AWSSDK.DynamoDBv2" Version="3.7.400.2" />
<PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="3.7.301" />
<PackageReference Include="AWSSDK.IoT" Version="3.7.400.2" />
<PackageReference Include="AWSSDK.Lambda" Version="3.7.400.2" />
<PackageReference Include="AWSSDK.S3" Version="3.7.400.2" />
<PackageReference Include="AWSSDK.SecretsManager" Version="3.7.400.2" />
<PackageReference Include="AWSSDK.SecretsManager.Caching" Version="1.0.6" />
<PackageReference Include="AWSSDK.SimpleEmailV2" Version="3.7.400.2" />
<PackageReference Include="AWSSDK.TimestreamQuery" Version="3.7.400.2" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.7">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.7">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.7.0" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.6.2" />
<PackageReference Include="AWSSDK.IotData" Version="3.7.400.2" />
<PackageReference Include="AWSSDK.Core" Version="3.7.400.2" />
</ItemGroup>
</Project>
However, when I set PublishReadyToRun to false then both projects works fine. I have already wasted three days in trying different things but with no success..