Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C项目中使用和不使用预发布标志更新nuget包_C#_Powershell_Msbuild_Teamcity_Nuget Package - Fatal编程技术网

C# 在C项目中使用和不使用预发布标志更新nuget包

C# 在C项目中使用和不使用预发布标志更新nuget包,c#,powershell,msbuild,teamcity,nuget-package,C#,Powershell,Msbuild,Teamcity,Nuget Package,我们使用git作为源代码控制,并遵循git流程 我们正在使用Visual Studio 2013 我们正在使用Teamcity v8.1 我们有两个C解决方案。解决方案A和解决方案B。解决方案B使用解决方案A创建的nuget包 我们使用teamcity作为构建服务器。我们有两个构建配置,它们将项目创建为一个nuget包。一个构建配置创建nuget包的预发布版本,另一个构建配置创建nuget包的稳定版本 用于创建预发布nuget的构建配置侦听开发分支。稳定版本的构建配置侦听主/发布/修补程序分支

我们使用git作为源代码控制,并遵循git流程

我们正在使用Visual Studio 2013

我们正在使用Teamcity v8.1

我们有两个C解决方案。解决方案A和解决方案B。解决方案B使用解决方案A创建的nuget包

我们使用teamcity作为构建服务器。我们有两个构建配置,它们将项目创建为一个nuget包。一个构建配置创建nuget包的预发布版本,另一个构建配置创建nuget包的稳定版本

用于创建预发布nuget的构建配置侦听开发分支。稳定版本的构建配置侦听主/发布/修补程序分支

当我们在开发分支工作时,我们使用nuget包的预发布版本。 但是,当我们创建一个发布分支时,我们希望使用nuget包的稳定版本

到目前为止,我们尝试的是: 在ProjectBcsproj文件中,我们在BeforeBuild目标中添加了一个元素,该元素执行nuget.exe以更新nuget包的预发布版本。这很好,因为每次构建项目B时,我们都会得到最新的nuget包预发布版本

但是当我们在release/master/hotfix分支中时,我们不想要预发布版本,而是想要稳定的版本

我已经创建了一个powershell脚本,该脚本是从BeforeBuild目标中的project B csproj文件执行的

在powershell脚本中,我可以找到我们所在的git分支,但我还没有找到使用nuget.exe将nuget包更新到最新稳定版本的方法。如果我可以在powershell脚本中使用nuget cmdlet,我可以运行带有版本标志的更新包,但在使用nuget.exe时不支持这一点


你做过类似的事情吗?你是如何解决这个问题的?

我在回来的时候也尝试过用Powershell自动更新和安装软件包。据我所知,在VisualStudio之外无法使用VisualStudiocmdlet

你可以自己做任何事。更新packages.config,运行,更新csproj文件

您的软件包可能有install.ps1文件。这还使用Visual Studio cmdlet。例如,install.ps1可以将配置文件添加到Visual Studio项目中,并将Copy to Output Directory设置为Copy(如果更新)。
这意味着您还必须将这些更改添加到csproj中。

听起来很复杂。为什么不改用nuget服务器呢?作为CI的一部分构建nuget软件包不是我的做法。我们使用teamcity内部nuget服务器分发软件包。因此,解决方案B从该提要获取nuget包。复杂的部分是根据您目前使用的git分支在包的稳定版本和预发布版本之间进行切换。您可能有两个nuget提要,一个用于稳定分支,另一个用于开发分支,并根据分支名称在这些nuget提要之间切换。我现在选择编写一个powershell脚本,用最新的稳定版本值替换.csproj和package.config文件中的包版本值,以便Visual Studio vil在重建solution@OKB我们没有完全一样的但是任何nuget包的自动更新都是混乱的。我们的构建有一个复杂的powershell脚本,可以找出您正在更新的版本,以查询源代码并查看最新版本与某些模式匹配,因为我们可能需要最新的2.7.*但3.0是可用的,然后它会在proj文件中执行类似的查找和替换操作,以便执行nuget还原。