我们有一个Azure功能应用程序。运行时版本为2。有时,此命令在我们的构建服务器(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>
答案 0 :(得分:2)
我在Net Framework 4.7中遇到相同的问题。
要解决该问题,您应该更新Microsoft.NET.Sdk.Functions
nuget程序包。
答案 1 :(得分:1)
将以下内容添加到 csproj 文件中:
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
是什么为我修复了它。
答案 2 :(得分:0)
为了避免相同的问题,我通过DevOps Agent创建了一个Windows帐户(Admin)。
目标是让每个帐户都有自己的nuget文件夹。 (不再在同一文件夹上//发出问题) C:\ Users \ Agent1.nuget C:\ Users \ Agent2.nuget ...
由于我已使用新的Windows帐户更改了所有Windows服务,因此我的构建中不再有错误;)(需要重新启动Agent Windows服务)
答案 3 :(得分:0)
一段时间后,我刚刚删除并重新创建了该应用程序。对我有用
答案 4 :(得分:0)
我的问题是我将Microsoft.NET.Sdk.Functions更新到版本3+,而我仍然拥有版本2的功能。我安装并定位到v1.0.37,就解决了问题