自己一直在寻找解决方案一段时间后,让我感到震惊的是,我想出的最后一个实际上就像这样简单:
- Slow Cheetah用于根据选定的构建配置转换配置文件(例如调试/发布)
- 每个构建配置的属性组,在项目文件中具有特定的单击一次项目属性(例如 ProductName 和 AssemblyName(用于测试和生产版本的并行安装)、InstallUrl)。
- 执行 /target:publish 时通过 msbuild 指定其他属性(如 ApplicationVersion、MinimumRequiredVersion)
无需手动复制任何配置文件,因为慢 cheetah 会处理这个问题。将在相应的构建配置的输出文件夹(例如 bin/Debug 或任何您拥有的)中创建单击一次包。
最大的优点是构建与使用 Visual Studio 或使用 msbuild 的自动构建相同(除了几个完全可选的附加属性)。在构建中添加额外的环境所需要做的就是在项目文件中创建新的构建配置和相应的慢 cheetah 转换和属性组。
整个设置至少适用于 .NET 3.5(不能谈论早期版本)及更高版本。
也许这对任何人都有帮助。随时询问详情。
PS:属性组如下所示(将它们放在定义默认 ClickOnce 设置的第一个属性组之后):
<PropertyGroup Condition=" '$(Configuration)' == 'Demo' ">
<AssemblyName>Com.MyApplication.Main.Demo</AssemblyName>
<InstallUrl>http://demoserver/myapp/</InstallUrl>
<ProductName>My Application %28Demo%29</ProductName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Test' ">
<AssemblyName>Com.MyApplication.Main.Test</AssemblyName>
<InstallUrl>http://testserver/myapp/</InstallUrl>
<ProductName>My Application %28Test%29</ProductName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Prod' ">
<AssemblyName>Com.MyApplication.Main</AssemblyName>
<InstallUrl>http://prodserver/myapp/</InstallUrl>
<ProductName>My Application</ProductName>
</PropertyGroup>