我希望设置一个包含构建、测试和部署阶段的 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
这将在 BuildOutput
文件夹中创建 MyProject.1.2.3.nupkg
。
但是它会重新构建该项目。
我正在寻找类似于 dotnet
命令行界面的东西。
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有没有可以跳过构建的属性?