我有一个部署为ClickOnce应用程序的C#应用程序。安装文件可以存储在我们的Web服务器上的三个可能文件夹之一:Alpha,Beta和Production。用户在IE中找到适当的位置以启动应用程序:www.foo.com/Alpha,www.foo.com/Beta或www.foo.com/Prod。在测试中,我们首先将安装文件复制到Alpha,然后(当它通过测试时)复制到Beta,然后(当它通过用户接受时)复制到生产。没有重新编译。
我想知道的是,C#代码是否可以在运行时知道 它是哪个版本:Alpha,Beta或Production。它将仅基于ClickOnce安装文件所在的文件夹。请记住,没有重新编译。
任何线索?
谢谢!
答案 0 :(得分:0)
您可以使用自定义清单元素执行此操作,但需要进行一些构建后处理。
应用程序只需在AppName.exe.manifest
文件上打开文件流,然后解析XML以查找和读取自定义元素,即可访问清单文件。清单部署到与可执行文件相同的目录中。
当应用程序文件被复制到Web服务器文件夹时,只需修改清单以附加自定义元素(从技术上讲它甚至可以是XML注释,如果您不想使用XML,则通过简单的文本比较进行解析解析器)。
修改清单后(在每个文件夹中),必须使用mage.exe签名工具重新签名。
您可以非常轻松地使用shell脚本自动执行此操作。但总的来说,构建不同的实际版本可能要简单得多。