gpt4 book ai didi

c# - 本地编译时如何将NuGet安装到.nuget文件夹中

转载 作者:行者123 更新时间:2023-12-02 19:52:39 24 4
gpt4 key购买 nike

我有两个 .Net 项目:

  • 其中一个项目是包含一些 DTO 的 .Net 标准项目;称之为“核心库”。这旨在作为 NuGet 包发布
  • 另一个是.Net框架项目,其中包含核心库的NuGet包。称之为“应用程序”

使用 TFS,我们能够编译核心库,发布生成的 NuGet 库,然后启动应用程序的构建,以恢复对核心库的 NuGet 引用。一切都按预期进行。

问题是,在开发核心库+应用程序时,我们需要频繁编译核心,并且不能等待整个核心库构建完成才能更新应用程序的本地引用。此外,我们必须推送核心库的完整提交(因此,在应用程序中测试它们之前,我们不能同时推送一个 DTO)。

所以我想知道 Visual Studio 和 Nuget 中是否存在一种方法来在本地用户的 .nuget 文件夹中发布/安装核心的 Nuget 库,以便让它对应用程序的项目自动可见在下一个版本中。

你能帮我解决这个问题吗?

最佳答案

Lance Li-MSFT的回答开始我根据自己的需要做了一些改变。事实上,在本地我没有安装 nuget.exe,只安装了 .Net Core 运行时,因此我使用 dotnet pack 命令而不是 nuget。 exe packdotnet nuget Push 而不是 nuget.exe Push。此外,在本地推送更新的 NuGet 包之前,我删除了具有相同版本的旧包,否则 dotnet nuget push will not overwrite包。

我接受 Lance Li-MSFT 的回答,因为它是我的解决方案的起点,适用于本地拥有 nuget.exe 的人。

我的解决方案如下

corelib.csproj

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

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>

<Target Name="PublishNuGetLocally" AfterTargets="Build">
<Exec Command="dotnet pack $(ProjectPath)"/>
<Exec Command="dotnet nuget delete --source $(UserProfile)\.nuget\packages $(PackageId) $(PackageVersion) --non-interactive" ContinueOnError="WarnAndContinue"/>
<Exec Command="dotnet nuget push --source $(UserProfile)\.nuget\packages $(ProjectDir)bin\$(ConfigurationName)\$(PackageId).$(PackageVersion).nupkg" />
</Target>
[...]

</Project>

顺便说一句,我不必在 Visual Studio 中配置包源,因为全局 Nuget 缓存(位于路径 %UserProfile%\.nuget\packages)is automatically used作为搜索 NuGet 包的第一个位置。

关于c# - 本地编译时如何将NuGet安装到.nuget文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57791059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com