【问题标题】:Microsoft Azure Functions Nuget Package Prevent NET Library From Packing Into A NugetMicrosoft Azure Functions Nuget 包阻止 NET 库打包到 Nuget
【发布时间】:2019-01-05 20:40:04
【问题描述】:

我有一个以 net462 为目标的 NET 库项目,其中包含一个 Microsoft.NET.SDK.Functions Nuget 包。问题是当我将我的项目打包到 Nuget 库中时,除了没有创建 .nupkg 之外,一切都成功了(清理、恢复、构建、打包)。如果我注释掉相关代码,去掉Nuget引用,打包的时候会生成一个nupkg文件。

我似乎遇到了这个问题:IN GITHUB 也许?

有问题的包 - https://www.nuget.org/packages/Microsoft.NET.Sdk.Functions

我的直接问题是 - 这是一个可能的功能吗?你能防止你的包裹被打包进 Nugets 吗?我怎么会知道。或者换句话说,这种情况(GitHub问题中描述的情况)是否可能?可能出了什么问题?谢谢!

【问题讨论】:

  • 你能提供你的用例吗?为什么要将 azure 函数打包到 nuget 中?
  • 能否详细说明重现的步骤,从头开始?
  • @VolodymyrBilyachat 我正在编写一个库来为 Http 触发的函数应用程序生成 swagger。所以我必须包含函数库。代码需要一堆引用来检查函数以生成 Swagger。
  • @任何更新,有效果吗?

标签: c# .net azure azure-functions azure-sdk


【解决方案1】:

我刚刚遇到了同样的问题,dotnet pack 没有为使用Microsoft.Functions.SDK 包的.csproj 文件生成包。

dotnet pack 允许您提供受尊重的MSBuild 参数,即使它没有出现在他们的文档中,因此您可以通过在命令行上执行类似的操作来强制生成nuget 包:

dotnet pack --configuration Release -property:IsPackable=true

函数 SDK 中似乎有一些代码我没有花时间去追查那些强制 IsPackable 标志为 false 的代码,不管 .csproj 中的值是什么。

如果您将来遇到这些问题,可以通过将-v=d(将详细程度设置为调试)附加到命令行命令来查看dotnet 命令的诊断信息。

【讨论】:

  • 我很欣赏这是线程死灵术,但你知道,这是我在寻找时着陆的地方 :)
【解决方案2】:

第一步:打开项目文件夹

第二步:打开cmd

第 5 步:您应该看到一个指向您的项目而不是解决方案目录的 cmd

第 6 步:复制并粘贴流动的命令

    PowerShell -Command "Get-ChildItem $dir | Where { $_.Name -match '.csproj'} | Select -Expand Name | out-file -encoding ASCII projectname"

    SET /p projectname=<projectname

    PowerShell -Command "(Get-Content -path ..\packages\Microsoft.NET.Sdk.Functions.1.0.24\build\netstandard1.0\Microsoft.NET.Sdk.Functions.Build.targets -Raw) -replace 'DependsOnTargets="""RunResolvePublishAssemblies"""', '' | Set-Content -Path  ..\packages\Microsoft.NET.Sdk.Functions.1.0.24\build\netstandard1.0\Microsoft.NET.Sdk.Functions.Build.targets"

    SET MSBuild_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin

    SET PATH=%MSBuild_PATH%;%PATH%

    MSbuild %projectname% /t:Clean;Rebuild /p:Configuration=Release

    PowerShell -Command "Get-ChildItem -Path .\bin\Release\bin -Recurse | Copy-Item -Destination .\bin\Release "

    PowerShell -Command "if(!(Test-Path -Path 'nuget.exe')){(new-object System.Net.WebClient).DownloadFile('https://dist.nuget.org/win-x86-commandline/latest/nuget.exe','nuget.exe')}"

    NuGet.exe pack %projectname% -Prop Configuration=Release -MSBuildPath "%MSBuild_PATH%"

    start .

第 7 步:您应该找到您的 nupkg 文件

注意:我使用了 vs 2017 的流畅步骤

创建一个新项目

安装 Microsoft.NET.Sdk.Functions

【讨论】:

  • 这不是一个正确的答案。不想浪费赏金。
  • @jn1kk ?感谢?,MSBuild 输出是什么?
猜你喜欢
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2023-03-22
相关资源
最近更新 更多