我们有一个Outlook插件,其中使用ClickOnce部署。
一旦在构建开发者检查,PC排队构建和应用程序发布到一个共享驱动器上的位置。
问题是,构建不会发布版本更改为当前的程序集版本,因此在以前版本的文件夹,这会导致损坏的安装说不能安装的版本发布。
我读过那篇文章 。 和我建立[组件:的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中。
我用哈德森作为构建服务器的MSBuild做构建。 哈德森设置与版本号的环境变量。 然后我传递环境变量作为命令行参数的程序我写的解析assemlyinfo.cs
文件和更新组件verison,文件版本和程序集信息的版本。
另一种方法是创建一个自定义的任务来完成,而不是可执行这个(即使现在更容易,因为它现在支持内联任务 )。 以前版本的TFS没有类似的东西在那里设置enviornment变量,但它可能会在2010年TFS已经改变。
这里有资源,可以帮助您与:
此外,我们使用的是法师的命令行创建的ClickOnce应用程序和部署清单。 我们称之为法师作为Exec
在MSBuild项目任务。
文章来源: ClickOnce deployment with MSBuild -> How to pass the current build number for application version/ or autoincrement