【问题标题】:dotnet publish fails with 'Metadata generation failed' sometimesdotnet 发布有时会因“元数据生成失败”而失败
【发布时间】:2019-02-13 00:11:40
【问题描述】:

我们有一个 Azure 函数应用。运行时版本为 2。有时此命令在我们的构建服务器上失败(Jenkins 在 Windows Server 上运行):

dotnet publish C:\temp\OurFunctionApp.csproj -c Release -o C:\temp\output

错误:

C:\Users\user1.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\1.0.1\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets(20,5):错误:元数据一代失败。 [C:\temp\OurFunctionApp.csproj]

当我从命令行运行此命令时,它总是可以正常工作。

我们的构建服务器上没有安装 Visual Studio。

如何诊断和修复此错误?

.csproj 文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.ApplicationInsights" Version="2.8.1" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="3.0.1" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Project1\Project1.csproj" />
    <ProjectReference Include="..\Project2\Project2.csproj" />
    <ProjectReference Include="..\Project3\Project3.csproj" />
    <ProjectReference Include="..\Project4\Project4.csproj" />
  </ItemGroup>
  <ItemGroup>
    <None Update="ourlist.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

【问题讨论】:

  • 这种情况只是偶尔发生?可以分享一下你的函数 csproj 文件吗?
  • @brettsam 是的,只是偶尔。我在我的问题中添加了 .csproj 文件的内容。
  • 奇怪 - 昨天中午,完全相同的事情开始在我们的构建服务器上发生。也是断断续续的。我猜可能有五分之一的构建,Azure Function 应用程序都错误并带有相同的消息Metadata generation failed
  • 啊,我们的构建服务器上没有安装 Visual Studio。
  • 对于关注此问题的任何人——您可以使用我们最新的 SDK 包再试一次吗? nuget.org/packages/Microsoft.NET.Sdk.Functions/1.0.26。你得到同样的东西吗?

标签: azure .net-core azure-functions


【解决方案1】:

我对 Net Framework 4.7 也有同样的问题。

要解决问题,您应该更新Microsoft.NET.Sdk.Functions nuget 包。

【讨论】:

    【解决方案2】:

    为了避免同样的问题,我通过 DevOps Agent 创建了一个 Windows 帐户(管理员)。

    这样做的目的是让每个帐户都有自己的 nugets 文件夹。 (没有更多//同一文件夹上的问题) C:\Users\Agent1.nuget C:\Users\Agent2.nuget ...

    由于我使用新的 Windows 帐户更改了所有 Windows 服务,因此我的构建中没有更多错误;)(需要重新启动代理 Windows 服务)

    【讨论】:

      【解决方案3】:

      一段时间后,我刚刚删除并重新创建了应用程序。这对我有用

      【讨论】:

        【解决方案4】:

        我的问题是我将 Microsoft.NET.Sdk.Functions 更新到版本 3+,而我仍然有版本 2 的功能。我安装并定位 v1.0.37 并解决了问题

        【讨论】:

          【解决方案5】:

          将以下内容添加到 csproj 文件中:

          <AzureFunctionsVersion>v2</AzureFunctionsVersion>
          

          这是为我解决的问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-08
            • 1970-01-01
            相关资源
            最近更新 更多