Azure / Azure/azure-functions-host
Building version 4.0.3971 no longer works without patch
- Dominant language
- C#
- Stars
- 2k
- Forks
- 482
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 38
Description
When attempting to build version 4.0.3971 with `build.sh`, an error occurs:
```
/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/test/Azure.Functions.Cli.Tests/Azure.Functions.Cli.Tests.csproj : warning NU1701: Package 'FSharp.Core 3.1.2.5' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework 'net6.0'. This package may not be fully compatible with your project. [/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/Azure.Functions.Cli.sln]
/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/test/Azure.Functions.Cli.Tests/Azure.Functions.Cli.Tests.csproj : warning NU1701: Package 'Suave 1.1.3' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework 'net6.0'. This package may not be fully compatible with your project. [/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/Azure.Functions.Cli.sln]
/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/test/Azure.Functions.Cli.Tests/Azure.Functions.Cli.Tests.csproj : warning NU1701: Package 'SuaveServerWrapper 0.0.3' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework 'net6.0'. This package may not be fully compatible with your project. [/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/Azure.Functions.Cli.sln]
/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/test/Azure.Functions.Cli.Tests/Azure.Functions.Cli.Tests.csproj : error NU1605: Detected package downgrade: Microsoft.ApplicationInsights from 2.20.0 to 2.18.0. Reference the package directly from the project to select a different version. [/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/Azure.Functions.Cli.sln]
/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/test/Azure.Functions.Cli.Tests/Azure.Functions.Cli.Tests.csproj : error NU1605: Azure.Functions.Cli.Tests -> Microsoft.Azure.Functions.CoreTools -> Microsoft.Azure.WebJobs.Script.WebHost 4.0.1 -> Microsoft.Azure.WebJobs.Script 4.0.1 -> Microsoft.Azure.WebJobs.Script.Abstractions 1.0.3-preview -> Microsoft.ApplicationInsights (>= 2.20.0) [/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/Azure.Functions.Cli.sln]
/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/test/Azure.Functions.Cli.Tests/Azure.Functions.Cli.Tests.csproj : error NU1605: Azure.Functions.Cli.Tests -> Microsoft.Azure.Functions.CoreTools -> Microsoft.ApplicationInsights (>= 2.18.0) [/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/Azure.Functions.Cli.sln]
/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj : error NU1605: Detected package downgrade: Microsoft.ApplicationInsights from 2.20.0 to 2.18.0. Reference the package directly from the project to select a different version. [/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/Azure.Functions.Cli.sln]
/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj : error NU1605: Microsoft.Azure.Functions.CoreTools -> Microsoft.Azure.WebJobs.Script.WebHost 4.0.1 -> Microsoft.Azure.WebJobs.Script 4.0.1 -> Microsoft.Azure.WebJobs.Script.Abstractions 1.0.3-preview -> Microsoft.ApplicationInsights (>= 2.20.0) [/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/Azure.Functions.Cli.sln]
/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj : error NU1605: Microsoft.Azure.Functions.CoreTools -> Microsoft.ApplicationInsights (>= 2.18.0) [/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971/Azure.Functions.Cli.sln]
3 Warning(s)
2 Error(s)
```
It appears that the culprit is `Microsoft.Azure.WebJobs.Script.WebHost`, version `4.0.1`, which has somehow been updated to use `Microsoft.ApplicationInsights` version `2.20.0` instead of `2.18.0`. The major concern here is that this used to not be the case, and version `4.0.1` may have been overriden with a force-push to the NuGet package repository.
To me, this is very dangerous and concerning. Not only does it break this build, it goes against fundamental best practices that Nuget package versions should really be immutable.
#### Repro steps
Provide the steps required to reproduce the problem:
You may easily reproduce this issue with the following Dockerfile:
```
# syntax=docker/dockerfile:1
FROM mcr.microsoft.com/dotnet/sdk:6.0.100
# Install .NET Core 6.0 SDK
RUN apt-get update && \
apt-get -y install wget unzip && \
wget -q https://github.com/Azure/azure-functions-core-tools/archive/refs/tags/4.0.3971.zip -O azfunctions.zip && \
unzip -d /root/azure-functions-cli-source azfunctions.zip
WORKDIR "/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971"
RUN dotnet build Azure.Functions.Cli.sln && \
dotnet publish src/Azure.Functions.Cli/Azure.Functions.Cli.csproj --output /root/azure-functions-cli
```
#### Workaround
Create a patch file named `0001-app-insights-2.20.0.diff` with the following contents:
```
From 62151049dca39ee44bd45eb1b511d7a14e8cb5d5 Mon Sep 17 00:00:00 2001
From: Anthony Iacono
Date: Fri, 11 Mar 2022 12:25:43 -0500
Subject: [PATCH] Patch: Upgrade Microsoft.ApplicationInsights from 2.18.0 to
2.20.0
---
src/Azure.Functions.Cli/Azure.Functions.Cli.csproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj b/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj
index 426bdc3..32077c5 100644
--- a/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj
+++ b/src/Azure.Functions.Cli/Azure.Functions.Cli.csproj
@@ -149,7 +149,7 @@
-
+
--
2.31.0
```
Update the Dockerfile:
```
# syntax=docker/dockerfile:1
FROM mcr.microsoft.com/dotnet/sdk:6.0.100
# Install .NET Core 6.0 SDK
RUN apt-get update && \
apt-get -y install wget unzip && \
wget -q https://github.com/Azure/azure-functions-core-tools/archive/refs/tags/4.0.3971.zip -O azfunctions.zip && \
unzip -d /root/azure-functions-cli-source azfunctions.zip
WORKDIR "/root/azure-functions-cli-source/azure-functions-core-tools-4.0.3971"
COPY 0001-app-insights-2.20.0.diff .
RUN git apply 0001-app-insights-2.20.0.diff
RUN dotnet build Azure.Functions.Cli.sln && \
dotnet publish src/Azure.Functions.Cli/Azure.Functions.Cli.csproj --output /root/azure-functions-cli
```
Contributor guide
Assessment
This issue has not been assessed yet.