Deployment Visual Studio Online与八达通部署

Deployment Visual Studio Online与八达通部署,deployment,msbuild,branching-and-merging,azure-devops,octopus-deploy,Deployment,Msbuild,Branching And Merging,Azure Devops,Octopus Deploy,我们的解决方案中有大约40个项目,其中主要3个是web应用程序、windows服务和数据库迁移应用程序 我已经安装了一个Azure虚拟机,上面有octopus部署应用程序和触手。目前,我正在批处理文件中使用以下生成命令进行测试: set msBuildDir=%WINDIR%\Microsoft.NET\Framework64\v4.0.30319 call %msBuildDir%\msbuild.exe "{SolutionFile}" /p:Configuration=Deploymen

我们的解决方案中有大约40个项目,其中主要3个是web应用程序、windows服务和数据库迁移应用程序

我已经安装了一个Azure虚拟机,上面有octopus部署应用程序和触手。目前,我正在批处理文件中使用以下生成命令进行测试:

set msBuildDir=%WINDIR%\Microsoft.NET\Framework64\v4.0.30319 
call %msBuildDir%\msbuild.exe "{SolutionFile}" /p:Configuration=Deployment-OctopusDeploy /p:RunOctoPack=true /p:OctoPackPackageVersion=%1     /p:OctoPackPublishPackageToHttp=http://localhost/OctopusDeploy/nuget/packages /p:OctoPackPublishApiKey={OURAPIKEY}
我必须创建一个新的配置,该配置没有构建Azure云服务项目,以防止在主web应用程序上进行双重构建,该应用程序两次尝试部署NuGet包。我还必须输入版本号,因为在我们的程序集文件中,我们的版本号如下:

[assembly: AssemblyVersion("2.62.*")]
我们得到一个错误,说2.62.*不是有效的版本号,所以我们将批处理文件放在控制台应用程序中,从那里加载版本号,如下所示,并在一个过程中将其传递到批处理文件中

public static string CurrentVersion
{
  get
  {
    if (String.IsNullOrWhiteSpace(_currentVersion))
    {
      Assembly assembly = Assembly.GetExecutingAssembly();
      var version = assembly.FullName.Split(',')[1];
      var fullversion = version.Split('=')[1];
      _currentVersion = fullversion;
    }
    return _currentVersion;
  }
}
我们还有一个开发和主分支,我们的最终目标如下:

我们希望在签入dev或main时让我们的TFS在线构建,并将OctoPack参数传递给MsBuild代理,如果NuGet包来自dev分支,则使用dev附加它们,如果它们来自主分支,则使用main附加它们。此外,我们希望正确读取版本,而不是必须从控制台应用程序中启动,我认为TFS build的在线版本无法实现这一点

使用OctoPack和visual studio online是否可以做到这一点?处理此场景的常用方法是什么?我确信有很多人使用Visual Studio Online/Branching/Octopus Deploy


非常感谢您的帮助/建议

您的Nuget版本号是否符合Nuget版本控制语义

这是正则表达式:

\d+(\s*\.\s*\d+){0,3}-[a-z][0-9a-z-]*

为了便于将来参考,如果此正则表达式发生更改,则源代码如下:

CodePlex正在关闭。他们说他们把这个移到了:但它真的移到了这里: