Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取资产文件不需要';在.net核心项目中发布时没有targetframework异常_C#_.net_Asp.net Core_Aws Lambda_Asp.net Core 3.1 - Fatal编程技术网

C# 获取资产文件不需要';在.net核心项目中发布时没有targetframework异常

C# 获取资产文件不需要';在.net核心项目中发布时没有targetframework异常,c#,.net,asp.net-core,aws-lambda,asp.net-core-3.1,C#,.net,Asp.net Core,Aws Lambda,Asp.net Core 3.1,我不明白csproj和推荐人是如何合作的。我创建了一个基本的.Net核心应用程序,它在本地构建得很好。但当我试图发表它时,我得到了如下例外 错误NETSDK1047:资产文件 'C:\Users\source\repos\AWSLambda7\AWSLambda7\obj\project.assets.json' 没有“.NETCoreApp,Version=v3.1/linux-x64”的目标。确保 该还原已运行,并且您已将“netcoreapp3.1”包含在 您的项目的TargetFrame

我不明白csproj和推荐人是如何合作的。我创建了一个基本的.Net核心应用程序,它在本地构建得很好。但当我试图发表它时,我得到了如下例外

错误NETSDK1047:资产文件 'C:\Users\source\repos\AWSLambda7\AWSLambda7\obj\project.assets.json' 没有“.NETCoreApp,Version=v3.1/linux-x64”的目标。确保 该还原已运行,并且您已将“netcoreapp3.1”包含在 您的项目的TargetFramework。您可能还需要包括 项目运行时标识符中的“linux-x64”。 [C:\Users\source\repos\AWSLambda7\AWSLambda7\AWSLambda7.csproj]

下面是代码片段

public class Function
{
    public async Task FunctionHandler(SQSEvent evnt, ILambdaContext context)
    {
        foreach (var message in evnt.Records)
        {
            await Task.CompletedTask;
        }
    }
}
csproj文件如下所示

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <AWSProjectType>Lambda</AWSProjectType>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Amazon.Lambda.Core" Version="1.1.0" />
    <PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.0.0" />
    <PackageReference Include="Amazon.Lambda.SQSEvents" Version="1.1.0" />
  </ItemGroup>
</Project>
{
  "version": 3,
  "targets": {
    ".NETCoreApp,Version=v3.1": {
      "Amazon.Lambda.Core/1.1.0": {
        "type": "package",
        "compile": {
          "lib/netstandard2.0/Amazon.Lambda.Core.dll": {}
        },
        "runtime": {
          "lib/netstandard2.0/Amazon.Lambda.Core.dll": {}
        }
      },
      "Amazon.Lambda.Serialization.SystemTextJson/2.0.0": {
        "type": "package",
        "dependencies": {
          "Amazon.Lambda.Core": "1.1.0"
        },
        "compile": {
          "lib/netcoreapp3.1/Amazon.Lambda.Serialization.SystemTextJson.dll": {}
        },
        "runtime": {
          "lib/netcoreapp3.1/Amazon.Lambda.Serialization.SystemTextJson.dll": {}
        }
      },
      "Amazon.Lambda.SQSEvents/1.1.0": {
        "type": "package",
        "compile": {
          "lib/netstandard2.0/Amazon.Lambda.SQSEvents.dll": {}
        },
        "runtime": {
          "lib/netstandard2.0/Amazon.Lambda.SQSEvents.dll": {}
        }
      }
    }
  },
  "libraries": {
    "Amazon.Lambda.Core/1.1.0": {
      "sha512": "ueGId8b4DEHoVWkHDs3iAJH8IUSAUGu5AqkoI/Syl4RuByzik7lz9IjoImQ==",
      "type": "package",
      "path": "amazon.lambda.core/1.1.0",
      "files": [
        ".nupkg.metadata",
        ".signature.p7s",
        "amazon.lambda.core.1.1.0.nupkg.sha512",
        "amazon.lambda.core.nuspec",
        "lib/netstandard1.3/Amazon.Lambda.Core.dll",
        "lib/netstandard1.3/Amazon.Lambda.Core.xml",
        "lib/netstandard2.0/Amazon.Lambda.Core.dll",
        "lib/netstandard2.0/Amazon.Lambda.Core.xml"
      ]
    },
    "Amazon.Lambda.Serialization.SystemTextJson/2.0.0": {
      "sha512": "En67XZpjBILNrLdb/7HqGtqkPjoRYDjViY4+PEn1CAe53FNStU/vbcVtDvDyvQeUnFgMui3zvMdlsjJIzBPHdQ==",
      "type": "package",
      "path": "amazon.lambda.serialization.systemtextjson/2.0.0",
      "files": [
        ".nupkg.metadata",
        ".signature.p7s",
        "amazon.lambda.serialization.systemtextjson.2.0.0.nupkg.sha512",
        "amazon.lambda.serialization.systemtextjson.nuspec",
        "lib/netcoreapp3.1/Amazon.Lambda.Serialization.SystemTextJson.dll",
        "lib/netcoreapp3.1/Amazon.Lambda.Serialization.SystemTextJson.xml"
      ]
    },
    "Amazon.Lambda.SQSEvents/1.1.0": {
      "sha512": "AD6rELASxItdSSR1Vj7X7pEE8OeGIADJkYer9dvHtXP+2Nhp==",
      "type": "package",
      "path": "amazon.lambda.sqsevents/1.1.0",
      "files": [
        ".nupkg.metadata",
        ".signature.p7s",
        "amazon.lambda.sqsevents.1.1.0.nupkg.sha512",
        "amazon.lambda.sqsevents.nuspec",
        "lib/netstandard1.3/Amazon.Lambda.SQSEvents.dll",
        "lib/netstandard1.3/Amazon.Lambda.SQSEvents.xml",
        "lib/netstandard2.0/Amazon.Lambda.SQSEvents.dll",
        "lib/netstandard2.0/Amazon.Lambda.SQSEvents.xml"
      ]
    }
  },
  "projectFileDependencyGroups": {
    ".NETCoreApp,Version=v3.1": [
      "Amazon.Lambda.Core >= 1.1.0",
      "Amazon.Lambda.SQSEvents >= 1.1.0",
      "Amazon.Lambda.Serialization.SystemTextJson >= 2.0.0"
    ]
  },
  "packageFolders": {
    "C:\\Users\\.nuget\\packages\\": {},
    "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
  },
  "project": {
    "version": "1.0.0",
    "restore": {
      "projectUniqueName": "C:\\Users\\source\\repos\\AWSLambda7\\AWSLambda7\\AWSLambda7.csproj",
      "projectName": "AWSLambda7",
      "projectPath": "C:\\Users\\source\\repos\\AWSLambda7\\AWSLambda7\\AWSLambda7.csproj",
      "packagesPath": "C:\\Users\\.nuget\\packages\\",
      "outputPath": "C:\\Users\\source\\repos\\AWSLambda7\\AWSLambda7\\obj\\",
      "projectStyle": "PackageReference",
      "fallbackFolders": [
        "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
      ],
      "configFilePaths": [
        "C:\\Users\\AppData\\Roaming\\NuGet\\NuGet.Config",
        "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
      ],
      "originalTargetFrameworks": [
        "netcoreapp3.1"
      ],
      "sources": {
        "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
        "https://api.nuget.org/v3/index.json": {}
      },
      "frameworks": {
        "netcoreapp3.1": {
          "projectReferences": {}
        }
      },
      "warningProperties": {
        "warnAsError": [
          "NU1605"
        ]
      }
    },
    "frameworks": {
      "netcoreapp3.1": {
        "dependencies": {
          "Amazon.Lambda.Core": {
            "target": "Package",
            "version": "[1.1.0, )"
          },
          "Amazon.Lambda.SQSEvents": {
            "target": "Package",
            "version": "[1.1.0, )"
          },
          "Amazon.Lambda.Serialization.SystemTextJson": {
            "target": "Package",
            "version": "[2.0.0, )"
          }
        },
        "imports": [
          "net461",
          "net462",
          "net47",
          "net471",
          "net472",
          "net48"
        ],
        "assetTargetFallback": true,
        "warn": true,
        "frameworkReferences": {
          "Microsoft.NETCore.App": {
            "privateAssets": "all"
          }
        },
        "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.301\\RuntimeIdentifierGraph.json"
      }
    }
  }
}

请注意,项目在Windows 10机器的VS-2019中构建得很好。

我认为您是在直接构建项目。默认情况下支持windows server,AWS lambda内部将使用Linux操作系统。我们需要将目标操作系统构建并打包为Linux 以下是您需要遵循的一些步骤

  • 确保您添加了一个Lambda序列化程序,下面是相同的代码 [组件:LambdaSerializer(typeof(DefaultLambdaJsonSerializer))]

  • 打开命令提示符并执行下面的命令,该命令将在Aws lambda ready软件包的支持下生成并打包(您必须安装Aws cli工具)

    dotnetlambda包

  • 如果您没有AWS CLI工具,请使用以下命令

    dotnet发布--输出“[output folderpath]”--配置“发布”--框架“netcoreapp3.1”/p:GenerateRuntimeConfiguration Files=true--运行时linux-x64--自包含false