Sii*_*aas 5 .net msbuild nuget
我想设置一个带有构建,测试和部署阶段的CI/CD管道.我可以在构建阶段构建我的项目
msbuild src\MyProject.csproj /t:Restore
msbuild src\MyProject.csproj /p:Configuration=Release /p:OutputPath=../BuildOutput
Run Code Online (Sandbox Code Playgroud)
接下来,我将构建并运行..\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
Run Code Online (Sandbox Code Playgroud)
到目前为止它似乎有效.
现在我想生成nuget包.我可以打电话:
msbuild src\MyProject.csproj /t:Pack /p:Configuration=Release /p:OutputPath=../BuildOutput /p:VersionPrefix=1.2.3
Run Code Online (Sandbox Code Playgroud)
这将MyProject.1.2.3.nupkg在BuildOutput文件夹中创建.但是它重新构建了该项目.
我正在寻找类似于dotnetcli的东西.
dotnet pack --no-build
Run Code Online (Sandbox Code Playgroud)
但我无法使用,dotnet因为我的项目有一个COM引用.
我也查看了Nuget.exe,但是当我打电话时似乎抛出了一个错误 nuget pack
Unable to cast object of type 'System.String' to type NuGet.Frameworks.NuGet.Frameworks1051960.NuGetFramework'.
Run Code Online (Sandbox Code Playgroud)
msbuild是否有可以跳过构建的属性?
这取决于您的工作流程中是否可以接受,但您可以在构建项目时使用文件中的<GeneratePackageOnBuild>属性来获取包。如果您的测试未通过,您可以丢弃该文件,但至少没有额外的重建来获取 NuGet 包。<PropertyGroup>.csproj.nupkg
在文章《使用 VS2017 和 Nuget 1轻松支持多个目标框架 (TFM) 》末尾有一个更完整的示例,说明如何使用此设置,但一个非常简单的示例代码片段如下所示:
<PropertyGroup>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
1:虽然原始链接没有报告 404,但它在 2021 年 10 月显示为空白。但是,可以在另一个 URL 上找到同一篇文章。
| 归档时间: |
|
| 查看次数: |
3936 次 |
| 最近记录: |