gpt4 book ai didi

.net - 如何在不重建项目的情况下使用 msbuild 创建 nuget 包?

转载 作者:行者123 更新时间:2023-12-04 20:30:43 25 4
gpt4 key购买 nike

我想设置一个包含构建、测试和部署阶段的 CI/CD 管道。
我可以在构建阶段构建我的项目

msbuild src\MyProject.csproj /t:Restore 
msbuild src\MyProject.csproj /p:Configuration=Release /p:OutputPath=../BuildOutput

接下来我将针对 ..\BuildOutput\MyProject.dll 构建和运行测试那已经建成了。
msbuild tests\MyProject.Tests.csproj /t:Restore
msbuild tests\MyProject.Tests.csproj /p:Configuration=Release /p:OutputPath=../BuildOutput /p:BuildProjectReferences=false
vstest.console BuildOutput\MyProject.Tests.dll

到目前为止,它似乎有效。

现在我想生成nuget包。
我可以打电话:
msbuild src\MyProject.csproj /t:Pack /p:Configuration=Release /p:OutputPath=../BuildOutput /p:VersionPrefix=1.2.3

这将创建 MyProject.1.2.3.nupkgBuildOutput文件夹。
但是,它重新构建了该项目。

我正在寻找类似于 dotnet 的东西cli。
dotnet pack --no-build

但我不能使用 dotnet因为我的项目有一个 COM 引用。

我还查看了 Nuget.exe,但是当我调用 nuget pack 时似乎抛出错误
Unable to cast object of type 'System.String' to type NuGet.Frameworks.NuGet.Frameworks1051960.NuGetFramework'.

msbuild 是否具有可以跳过构建的属性?

最佳答案

这取决于这在您的工作流程中是否可以接受,但您可以使用 <GeneratePackageOnBuild>房产在 <PropertyGroup>您的 .csproj文件以在您构建项目时获取包。如果您的测试没有通过,您可以丢弃 .nupkg文件,但至少没有额外的重建来获取 NuGet 包。

this article的末尾有一个更完整的例子来说明如何使用这个设置。 ,但一个示例性的非常简单的代码片段如下所示:

<PropertyGroup>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
</PropertyGroup>

关于.net - 如何在不重建项目的情况下使用 msbuild 创建 nuget 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974163/

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