Skip to content

dotnet lambda package does not allow custom parameters for the underlying dotnet publish #210

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mabead opened this issue Jan 23, 2018 · 5 comments
Labels
feature-request A feature should be added or improved.

Comments

@mabead
Copy link
Contributor

mabead commented Jan 23, 2018

When we build our .net core 2 assembly, we use the custom parameter /p:Version=6.6.6 for the dotnet build and dotnet publish commands. This makes is possible to set the assembly version to 6.6.6.

Unfortunately, when we do a dotnet lambda package, it calls dotnet publish under the hood but it does not allow the /p:Version=6.6.6 parameter to be passed all the way to dotnet publish. As a result, the version of the assembly in the lambda ends-up at 1.0.0.

Here's a powershell script that demonstrates the problem:

PS C:\Users\mbeaudry> function Get-FileVersion([string]$fileName)
>> {
>> [System.Diagnostics.FileVersionInfo]::GetVersionInfo($fileName).FileVersion
>> }
PS C:\Users\mbeaudry>
PS C:\Users\mbeaudry> cd \tmp
PS C:\tmp> mkdir DotNetLambdaPackageVersionIssue


    Directory: C:\tmp


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        1/23/2018   3:04 PM                DotNetLambdaPackageVersionIssue


PS C:\tmp> cd DotNetLambdaPackageVersionIssue
PS C:\tmp\DotNetLambdaPackageVersionIssue>
PS C:\tmp\DotNetLambdaPackageVersionIssue> dotnet new lambda.EmptyFunction
The template "Lambda Empty Function" was created successfully.
PS C:\tmp\DotNetLambdaPackageVersionIssue> cd .\src\DotNetLambdaPackageVersionIssue\
PS C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue>
PS C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue> dotnet restore
  Restoring packages for C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\DotNetLambdaPackageVersionIssue.csproj...
  Restore completed in 46.7 ms for C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\DotNetLambdaPackageVersionIssue.csproj.
  Generating MSBuild file C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\obj\DotNetLambdaPackageVersionIssue.csproj.nuget.g.props.
  Generating MSBuild file C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\obj\DotNetLambdaPackageVersionIssue.csproj.nuget.g.targets.
  Restore completed in 546.76 ms for C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\DotNetLambdaPackageVersionIssue.csproj.
PS C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue> dotnet build --configuration release /p:Version=6.6.6
Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restoring packages for C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\DotNetLambdaPackageVersionIssue.csproj...
  Restore completed in 42.46 ms for C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\DotNetLambdaPackageVersionIssue.csproj.
  Restore completed in 235.61 ms for C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\DotNetLambdaPackageVersionIssue.csproj.
  DotNetLambdaPackageVersionIssue -> C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\bin\release\netcoreapp2.0\DotNetLambdaPackageVersionIssue.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:02.46
PS C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue> dir -r -include DotNetLambdaPackageVersionIssue.dll | % { Write-Host "$($_.FullName) => $(Get-FileVersion $_)"}
C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\bin\release\netcoreapp2.0\DotNetLambdaPackageVersionIssue.dll => 6.6.6.0
C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\obj\release\netcoreapp2.0\DotNetLambdaPackageVersionIssue.dll => 6.6.6.0
PS C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue>
PS C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue> dotnet lambda package --configuration release -f netcoreapp2.0 -o ./output.zip /p:Version=6.6.6
Executing publish command
... invoking 'dotnet publish', working folder 'C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\bin\release\netcoreapp2.0\publish'
... publish: Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core
... publish: Copyright (C) Microsoft Corporation. All rights reserved.
... publish:   Restoring packages for C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\DotNetLambdaPackageVersionIssue.csproj...
... publish:   Restore completed in 38.06 ms for C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\DotNetLambdaPackageVersionIssue.csproj.
... publish:   Restore completed in 413.56 ms for C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\DotNetLambdaPackageVersionIssue.csproj.
... publish:   DotNetLambdaPackageVersionIssue -> C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\bin\release\netcoreapp2.0\linux-x64\DotNetLambdaPackageVersionIssue.dll
... publish:   DotNetLambdaPackageVersionIssue -> C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\bin\release\netcoreapp2.0\publish\
Zipping publish folder C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\bin\release\netcoreapp2.0\publish to C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\output.zip
... zipping: Amazon.Lambda.Core.dll
... zipping: Amazon.Lambda.Serialization.Json.dll
... zipping: DotNetLambdaPackageVersionIssue.deps.json
... zipping: DotNetLambdaPackageVersionIssue.dll
... zipping: DotNetLambdaPackageVersionIssue.pdb
... zipping: DotNetLambdaPackageVersionIssue.runtimeconfig.json
... zipping: Newtonsoft.Json.dll
Lambda project successfully packaged: C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\output.zip
PS C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue> mkdir .\output > $null
PS C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue> Expand-Archive .\output.zip -DestinationPath .\output\
PS C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue> dir -r -include DotNetLambdaPackageVersionIssue.dll | % { Write-Host "$($_.FullName) => $(Get-FileVersion $_)"}
C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\bin\release\netcoreapp2.0\linux-x64\DotNetLambdaPackageVersionIssue.dll => 1.0.0.0
C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\bin\release\netcoreapp2.0\publish\DotNetLambdaPackageVersionIssue.dll => 1.0.0.0
C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\bin\release\netcoreapp2.0\DotNetLambdaPackageVersionIssue.dll => 6.6.6.0
C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\obj\release\netcoreapp2.0\linux-x64\DotNetLambdaPackageVersionIssue.dll => 1.0.0.0
C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\obj\release\netcoreapp2.0\DotNetLambdaPackageVersionIssue.dll => 6.6.6.0
C:\tmp\DotNetLambdaPackageVersionIssue\src\DotNetLambdaPackageVersionIssue\output\DotNetLambdaPackageVersionIssue.dll => 1.0.0.0

As you can see, after dotnet build my assembly version was properly set to 6.6.6.0. But unfortunately, after dotnet lambda package, it was set to 1.0.0.0 in the zip file that contains the lambda.

Note that I am using Amazon.Lambda.Tools 2.0.1.

@normj
Copy link
Member

normj commented Jan 23, 2018

Agreed, we need a parameter for passing in additional parameters to the underlying dotnet publish command.

@PaulColeman
Copy link

PaulColeman commented Jan 23, 2018 via email

@mabead
Copy link
Contributor Author

mabead commented Jan 23, 2018

FYI: before .net core 2, I didn't need to specify the option when doing a dotnet lambda package because in the pre-2.0 days, dotnet publish was not rebuilding the project. Therefore, the assemblies being published were the ones that were already built with the good assembly version.

See https://github.com/dotnet/cli/issues/5331 for more information.

@normj
Copy link
Member

normj commented Feb 5, 2018

I released version 2.1.0 of Amazon.Lambda.Tools today which has a new msbuild-parameters switch which pass the values down to the dotnet publish command. Also any commandline arguments that start with /p: are assumed to be msbuild parameters. So you can do dotnet lambda package /p:Version=2.0.0

@mabead
Copy link
Contributor Author

mabead commented Feb 7, 2018

I confirm that it works. I used version 2.1.0 of Amazon.Lambda.Tools + I added /p:Version=6.6.6 to dotnet lambda package and it works like a charm.

Thanks for the quick fix!

@mabead mabead closed this as completed Feb 7, 2018
@diehlaws diehlaws added feature-request A feature should be added or improved. and removed Enhancement labels Jan 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request A feature should be added or improved.
Projects
None yet
Development

No branches or pull requests

4 participants