【问题标题】:Include date in web publishing package filename; visual studio在网络发布包文件名中包含日期;视觉工作室
【发布时间】:2014-10-14 15:30:01
【问题描述】:

在创建新部署包时(例如,根据 http://msdn.microsoft.com/en-us/library/dd465323(v=vs.110).aspx),系统会要求您提供包位置。

我想在这个文件名上附加一个时间戳,这样我就可以通过浏览输出位置轻松访问旧版本。

即我想指定一个值,例如:Packages\Test\MyProject{yyyy-mm-dd hh.mm.ss}.zip ...其中大括号中的值被当前日期/时间替换。

这可以通过本机视觉工作室实现吗? 如果是这样,怎么做?

【问题讨论】:

  • 真的有必要吗?文件的元数据将包括日期和时间。
  • 感谢@RamsaySmith 的提示;但是,如果新创建的文件具有相同的名称,则原始文件将被覆盖。如果有某种方法可以避免这种情况(例如生成新的 guid,或在文件名中添加版本号),那就更好了;但我也不知道这是否可能。脚本可用于添加时间戳或复制/移动文件 - 但如果有办法直接从 VS 执行此操作会更好。
  • 您可以使用 MSBuild 脚本执行此操作。稍后我会提供更多详细信息,可惜届时奖金将过期:(

标签: deployment visual-studio-2013 timestamp web-deployment web-deployment-project


【解决方案1】:

您可以按如下方式编辑您的 csproj 文件(您必须将其作为文本文件打开): - 在文件末尾附近,您会发现一个带有 AfterBuild 和 BeforeBuild 目标的注释,在此注释之后添加以下代码

<Target Name="OnBeforePublishMyProject">
    <PropertyGroup>
      <_PackageTempDir>H:\Cs\Test\build.$([System.DateTime]::Now.ToString("yyyy.MM.dd.HH.mm.ss"))</_PackageTempDir>
      <AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
    </PropertyGroup>
  </Target>
  <Target Name="PublishMyProject" DependsOnTargets="Build;OnBeforePublishMyProject;PipelinePreDeployCopyAllFilesToOneFolder">
  </Target>
  • 现在您可以使用 Visual Studio 命令提示符和以下命令发布您的项目:

    cd path_to_your_project
    
    msbuild /t:PublishMyProject
    

您也可以创建一个 bat 文件来执行这些命令

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    相关资源
    最近更新 更多