使用 MSBuild 进行 ClickOnce 部署 -> 如何传递应用程序版本/或自动增量的当前内部版本号

2023-12-30

我们有一个使用 ClickOnce 部署的 Outlook 加载项。

一旦开发人员签入构建,PC 就会对构建进行排队,并将应用程序发布到共享驱动器上的某个位置。

问题在于,构建不会将发布版本更改为当前程序集版本,因此它会在先前版本的文件夹中发布,这会导致安装程序损坏,提示无法安装该版本。

我读了那篇文章 https://stackoverflow.com/questions/8482360/how-can-i-get-msbuild-to-increment-clickonce-publish-revision-version-number-on。我设置了[程序集:AssemblyVersion(“1.0.*”)]。依然没有。

我找到了一种方法来解决这个问题,通过增加<ApplicationVersion></ApplicationVersion>在 *.csproj 文件中。但我希望它能够自动化。

另一个解决方法是在执行 msbuild.exe 时:

/target:publish   /property:PublishDir="\\sharedDir\\" /property:GenerateManifests=true
/property:ApplicationVersion=1.0.0.123

但它仍然不是自动化的。我真的很想将当前版本号传递给 msbuild.exe 或在每个版本中替换中的值<ApplicationVersion></ApplicationVersion>与实际的内部版本号。或者还有别的办法吗?


我遇到了同样的问题,这就是我来到这里的原因。我能够使用您问题中的代码作为基础来解决。以下是使用 TFS 解决问题的步骤。

打开构建模板并打开工作流程底部的“参数”选项卡。找到MSBuildArguments并修改默认值。以下是我最终得到的结果:

// Note: You can use /p for /property and /t for /target

"/t:Publish /p:PublishDir=<PublishDirectory> /p:ApplicationVersion="
    + Date.Today.ToString("yyyy") + "."
    + Date.Today.ToString("MMdd") + "."
    + Date.Now.Hour.ToString() + "."
    + Date.Now.Minute.ToString()

当然,现在您需要保存并签入新的构建文件。我在让构建定义使用新值时遇到问题,因此我刚刚创建了一个新的构建定义。

这将创建一个新的应用程序文件夹,例如:

<ApplicationName>_2013_0315_09_55

我知道这是对旧帖子的新答案,因此我确信您已经找到了另一个解决方案,但我希望这可以帮助任何想要将 ClickOnce 部署与 TFS 结合使用的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MSBuild 进行 ClickOnce 部署 -> 如何传递应用程序版本/或自动增量的当前内部版本号 的相关文章

  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标
  • 元素属性语法和属性属性语法之间有语义差异吗?

    我认为元素属性语法和属性属性语法在语义上没有太大区别 但是 我发现一定有什么不同 例如 下面的例子只是演示了一个简单的触发器
  • 无法获取托管类型(“T”)的地址、获取其大小或声明指向托管类型的指针

    为什么哦为什么这是不允许的 private static unsafe byte ConvertStruct
  • .NET 中严格浮点数学的库

    我有 Java 算法 计算及其单元测试 单元测试期望结果具有一定的精度 增量 现在我将算法移植到 NET 中 并希望使用相同的单元测试 我使用双数据类型 问题在于 Java 使用 strictfp 64 位 来执行 Math 类中的某些操作
  • 当用户打开文件时如何锁定对文件的访问?

    我正在编写一个 C NET 程序 该程序使用 XmlSerializer 对当前用户正在处理的项目与 XML 文件进行序列化和反序列化 这工作正常 但我试图找到一种方法来防止两个用户从网络驱动器打开同一个文件并让一个用户覆盖前一个用户的保存
  • DataGridView 中的 C# FormatException

    我创建了一个带有一些列的 DataGridView 订单列仅允许用户输入 int 数字 当我输入 j 例如 时 它会抛出 FormatException 并且我尝试添加 try catch 来解决问题 但它看起来不起作用 private v
  • 将变量作为参数传递与传递另一个函数的返回值时出现“无效过程调用”错误

    我收到错误 无效的过程调用或参数 AddRange 当传递一个变量到ArrayList AddRange https msdn microsoft com en US library zhfwys3c 28v vs 110 29 aspx
  • 为使用 SSH.NET SshClient.CreateShellStream 执行的命令 (sudo/su) 提供子命令

    我正在尝试使用 Renci SSH NET 从 C Web 应用程序连接到远程 Linux 服务器并执行 shell 脚本 我想一个接一个地运行脚本 但不知道如何运行脚本并读取输出并将其存储在标签中 我已经尝试了下面的代码 但无法一行接一行
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 如何将位写入文件?

    如何使用 c net 将位 而不是字节 写入文件 我很坚持它 Edit 我正在寻找一种不同的方法 将每 8 位写为一个字节 一次可以写入的最小数据量是一个字节 如果您需要写入单独的位值 例如 二进制格式需要 1 位标志 3 位整数和 4 位
  • 在业务逻辑中使用反射是一种好的做法吗?

    我需要开发一个由两个主要部分组成的应用程序 具有特定业务类别的业务逻辑部分 例如书籍 图书馆 作者 一个通用部分 可以在数据网格中显示书籍 图书馆 将它们映射到数据库 通用部分使用反射从业务类中获取数据 而不需要在业务类中编写特定的数据网格
  • 类库的 app.config 中的绑定重定向有什么作用吗?

    我经常使用的 VS 解决方案包括单个可执行项目 控制台应用程序 网络应用程序 和许多类库项目这些都被可执行文件引用 使用 NuGet 并安装包时 经常会出现app config为每个项目创建的文件 通常只包含合并引用程序集版本的绑定重定向列
  • 如何在 .NET 中使 ComboBox 不可编辑?

    我想要一个 仅选择 ComboBox它提供了一个项目列表供用户选择 应在文本部分禁用打字ComboBox控制 我最初对此进行谷歌搜索 发现了一个过于复杂 误导性的建议来捕捉KeyPress event 要使 ComboBox 的文本部分不可
  • .Net 支持柯里化泛型吗?

    假设我们有一个嵌套的泛型类 public class A
  • 将两个垂直滚动条相互绑定

    我在控件中有两个 TextBox 并且它们都有两个 VerticalScrollBar 我想在它们之间绑定 VerticalScrollBars 如果一个向上 第二个也会向上等等 如果可以的话我该怎么做 Thanks 不是真正的绑定 但它有
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • 使用属性和性能

    我正在优化我的代码 我注意到使用属性 甚至自动属性 对执行时间有深远的影响 请参阅下面的示例 Test public void GetterVsField PropertyTest propertyTest new PropertyTest

随机推荐

  • 使用 Java 解析 XML 并获取元素值和属性值

    我有一个 XML 文件 元素也有属性 我有一个简单的 java 文件 它解析和打印文本文件中元素的值 但不解析和打印元素属性值 请您帮助获取要打印的属性值 我粘贴下面的代码 employees xml 文件
  • javascript setTimeout 是否保证会触发

    我读过这篇文章 http ejohn org blog how javascript timers work http ejohn org blog how javascript timers work 我知道如果页面太忙 setInter
  • 程序集定义错误

    我试图摆弄我的汇编函数以使其正常工作 但遇到了一些难以解决的错误 其中之一是 A2005 它声明了符号重新定义 Average 另一种是 A1010 它指出了不匹配的块嵌套 Average 任何帮助表示赞赏 cpp代码 include
  • 将 eclipse 项目导入到 Android studio - 错误“此项目引用 Eclipse 工作区...”

    我尝试将现有项目 eclipse 导入到 Android Studio 但在导入时收到一条无法解决的对话框消息 此项目引用其项目元数据中的 Eclipse 工作区相对路径 为了帮助导入项目 请指向 Eclipse 工作区目录 请检查截图 我
  • JSON.parse() 正则表达式值的问题

    我有以下 JSON 字符串 使用 PHP 5 2 json encode 编码 foo 此 JSON 字符串有效 您可以在以下位置查看 http www jsonlint com http www jsonlint com 但是本机 JSO
  • 在 VB 2010 中的数据表中插入新列时,如何更新 SQL Server 2008 数据库?

    使用 VB 2010 和 SQL Server 2008 我能够在数据表中插入新行 删除行和更新数据 并使用数据适配器更新数据库 不会出现任何问题 当我尝试添加新列时 该列出现在数据表中 但不会更新到数据库 我目前正在使用 DataAdap
  • 如何向表格行添加边距 [重复]

    这个问题在这里已经有答案了 我有一个包含许多行的表 其中一些行是class highlight 并表示需要采用不同样式并突出显示的行 我想要做的是在这些行之前和之后添加一些额外的间距 以便它们看起来与其他行稍微分开 我以为我可以完成这件事m
  • 将手势识别器应用到导航栏时遇到问题

    在我的 iPad 应用程序中 我的屏幕上有多个视图 我想要做的是将双击手势识别器应用到导航栏 但我没有成功 但是当相同的手势识别器应用于该视图时它就可以工作了 这是我正在使用的代码 Create gesture recognizer not
  • 如何在 Maven 2 中的两个测试套件之间切换?

    我们正在使用maven surefire 插件 http maven apache org plugins maven surefire plugin 运行我们的 Java 测试 测试分为两类 快速测试 测试缓慢 整个 快速 套件只需几秒钟
  • 理解和使用复制赋值构造函数

    我试图了解复制赋值构造函数在 C 中的工作原理 我只使用过java 所以我真的对此一无所知 我读过并发现返回参考文献是一个很好的做法 但我不知道应该如何做到这一点 我写了这个小程序来测试这个概念 主要 cpp include
  • 计算文件中的空白行数

    In 计算 bash 中的 非空白 代码行数 https stackoverflow com questions 114814 count non blank lines of code in bash他们解释了如何计算非空行的数量 但是有
  • 调用线程必须是STA

    我正在尝试模拟射弹 并尝试仅在定时事件中创建标签一次 因为它的参数中有一个我需要在定时事件中的对象 但是当我运行它时出现这个线程错误 请帮助 我的代码是 void onTimedEvent Object source ElapsedEven
  • 无法连接到服务器: dial tcp [::1]:8080: connectex: 由于目标机器主动拒绝而无法建立连接

    我正在研究 Azure Kubernetes 我们可以在 Azure 中存储 Docker 映像 我正在尝试检查我的 kubectl 版本 然后我得到 无法连接到服务器 拨打 tcp 1 8080 connectex 否 由于目标机器主动拒
  • 有人有 ERD 符号快速参考吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一页快速参考或备忘单 最好是 PDF 格式 以了解 Crowsfoot Martin 表示法
  • isset() 和 array_key_exists() 有什么区别? [复制]

    这个问题在这里已经有答案了 以下两个函数调用如何比较 isset a key array key exists key a array key exists https www php net manual function array k
  • 如何在 WPF 中使用 XAML 设置 ComboBox 标头

    过去几天我一直试图为我的组合框创建标题 但我似乎找不到方法 到目前为止我发现的所有内容都无法在我的模型中实现 我不得不说我对数据绑定的了解很薄弱 我一直在认真阅读它 我创建了一个组合框并用来自不同数据库的数据填充它 然后 我使用转换器连接相
  • PHP - 将变量传递给类

    我正在尝试学习 OOP 并且我已经完成了这门课 class boo function boo another class some normal variable some normal variable another class gt
  • 将图像对齐到段落 css 的右侧

    我想将图像与段落的右侧对齐 并且我希望能够这样做 而不必在段落上设置固定宽度以及远离图像的一些填充 我怎样才能做到这一点 https jsfiddle net mnakoajk https jsfiddle net mnakoajk box
  • ios9 无法加载资源

    当我在 ios9 中调用我的 api 时遇到此错误 但在 ios8 中工作正常 无法加载资源 因为应用程序传输安全策略需要使用安全连接 ios9 您需要在 plist 中添加一个标志 更多信息请访问https forums develope
  • 使用 MSBuild 进行 ClickOnce 部署 -> 如何传递应用程序版本/或自动增量的当前内部版本号

    我们有一个使用 ClickOnce 部署的 Outlook 加载项 一旦开发人员签入构建 PC 就会对构建进行排队 并将应用程序发布到共享驱动器上的某个位置 问题在于 构建不会将发布版本更改为当前程序集版本 因此它会在先前版本的文件夹中发布