nuget add 在 msbuild exec 命令中不起作用

问题描述 投票:0回答:1

我正在尝试在 VS2022 中自动化流程 Build -> Pack -> Add for nuget package。我已经创建了 SDK 类型项目并使用默认设置来创建 nuget 包。在 Release 模式下执行 Pack Command 后,我在 /bin/Release/ 文件夹中有以下输出:

net8.0/    contains library files
my-package.nupkg 

到目前为止一切顺利。现在我想在 Pack 命令完成后自动执行 nuget add 命令,并将 nuget 包发布到我的本地存储库。当我在 csproj 文件所在的文件夹中启动 power shell 时,并执行以下命令:

nuget add bin/Release/my-package.0.0.1.nupkg -Source 'c:\Users\MyUser\OneDrive\nuget\packages\'

命令成功完成,我可以查看并使用其他解决方案中的包。

但是,如果我尝试自动化此操作,则不起作用。在 csproj 文件中:

<Target Name="AddPackage" AfterTargets="Pack" Condition=" '$(Configuration)' == 'Release'">
  <Message Text="Adding nuget file to local repository..." Importance="high" />
  <Exec Command="nuget add bin/Release/$(PackageId).$(PackageVersion).nupkg -Source 'c:\Users\MyUser\OneDrive\nuget\packages\'" />
</Target>

输出窗口显示错误:

1>Adding nuget file to local repository...
1>The given path's format is not supported.
error MSB3073: The command "nuget add bin/Release/my-package.0.0.1.nupkg -Source 'c:\Users\MyUser\OneDrive\nuget\packages\'" exited with code 1.

我也尝试过没有相对路径:

Command="nuget add $(PackageId).$(PackageVersion).nupkg -Source ....
Command="nuget add my-package.0.0.1.nupkg -Source ....

并手动复制csproj文件夹中的nupkg文件,并且出现同样的错误。

任何人都知道为什么它是从命令行而不是从 VS 运行的,以及如何从 VS 构建/打包过程自动执行此任务?

msbuild nuget visual-studio-2022 nuget-package
1个回答
0
投票

我能够重现您的问题:

我认为你需要这样的东西:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
    <PackageId>ClassLibrary1</PackageId>
    <PackageVersion>1.0.0</PackageVersion>
  </PropertyGroup>
<Target Name="AddPackage" AfterTargets="Pack" Condition=" '$(Configuration)' == 'Release'">
  <Message Text="Adding nuget file to local repository..." Importance="high" />
  <!--<Exec Command="nuget add bin/Release/$(PackageId).$(PackageVersion).nupkg -Source 'c:\Users\MyUser\OneDrive\nuget\packages\'" />-->
  <Exec Command="nuget add &quot;$(ProjectDir)bin\Release\$(PackageId).$(PackageVersion).nupkg&quot; -Source &quot;C:\Path\To\Your\NuGet\Package\Source&quot;" />
</Target>
</Project>

你可以看到我这边成功了:

关键是文件是XML格式。

© www.soinside.com 2019 - 2024. All rights reserved.